Appearance
Setting up email
Do this before anything else. Password resets, staff logins, fee receipts and notices all travel by email. About 15 minutes.
Email settings live in three places
This surprises people, so it is worth understanding before you start. The system looks for email settings in this order, and the first one it finds wins:
| Level | Who sets it | When it is used |
|---|---|---|
| School SMTP | Each school, in its own settings | Always, for that school's email — it beats everything else |
| Platform settings | You, in the superadmin panel | When the school has none, and the toggle is on |
.env file | You, during installation | When neither of the above applies |
Which should you use?
Set the platform settings and leave it at that. Schools can add their own later if they want email to come from their own address — most never bother, and yours works for everybody.
Setting up platform email
Sidebar → Settings → Mail
Fill in these fields:
| Field | What to enter | Example |
|---|---|---|
| Mail Host | Your provider's outgoing server | smtp.hostinger.com |
| Mail Port | 465 or 587 — see below | 587 |
| Mail Username | Usually the full email address | noreply@yourdomain.com |
| Mail Password | That mailbox's password | — |
| Mail Encryption | ssl for port 465, tls for port 587 | tls |
| Mail From Address | The address email appears to come from | noreply@yourdomain.com |
| Mail From Name | The name recipients see | St Mary's School |
Then switch Use These Settings to Active, or the system carries on using the .env file and your changes appear to do nothing.
Ports and encryption must match
465 goes with ssl. 587 goes with tls. Mixing them is the single most common reason email fails with a timeout or a handshake error.
Press Test Mail before Save Mail Settings. If the test arrives, save. If it does not, nothing has been changed yet.
Common providers
Confirm these with your provider — they do change.
| Provider | Host | Port | Encryption |
|---|---|---|---|
| Hostinger email | smtp.hostinger.com | 465 | ssl |
| cPanel mailbox | mail.yourdomain.com | 465 | ssl |
| Gmail / Google Workspace | smtp.gmail.com | 587 | tls |
| Microsoft 365 | smtp.office365.com | 587 | tls |
| SendGrid | smtp.sendgrid.net | 587 | tls |
Gmail will not accept your normal password
Google blocks ordinary passwords for this. You must turn on 2-Step Verification on that Google account and generate an App Password, then use the 16-character app password as the Mail Password.
If you skip this you get "username and password not accepted", no matter how many times you retype the correct password.
Letting a school use its own address
A school that wants email to come from its own address sets this up itself, in its own settings. Once saved, that school's email always uses its own settings, whatever the platform is set to.
The school's test sends without saving, so a wrong password cannot break their email — if the test fails, nothing has changed.
If a school leaves the From address blank, the system falls back to the school's own email address and name automatically.
Sending a lot of email
Shared hosting mailboxes have sending limits — often a few hundred messages an hour. A school emailing 900 fee receipts will hit that limit, and messages will silently stop.
If you send in bulk, use a dedicated sending service such as SendGrid, Brevo or Amazon SES. They cost little at school volumes and will not suspend your hosting account for looking like a spam source.
If email is not arriving
Work down this list in order.
| Check | How |
|---|---|
| Is the cron job running? | Most email is queued, not sent instantly. No cron means nothing sends and no error appears — check this first |
| Does Test Mail work? | If yes, the settings are fine and the problem is elsewhere |
| Is Use These Settings on? | If off, your saved settings are ignored and .env is used |
Is MAIL_MAILER set to log in .env? | Then email is written to a log file and never sent. It must be smtp |
| Do port and encryption match? | 465 = ssl, 587 = tls |
| Is it landing in spam? | Very likely if the From address is a different domain to your sending server |
The single most common cause
It is almost always the cron job, not the email settings. Test Mail sends immediately, but real email goes through the queue — so a broken cron job produces exactly this: the test works, real email never arrives.