Sending emails using simple PHP functions like mail() might seem like an easy solution for contact forms or website notifications. However, this method is very outdated and has severe limitations when it comes to security and deliverability.
Emails sent via php mail() often lack proper authentication headers, which makes them more likely to be flagged as spam or rejected entirely by the receiving server.
To address this and protect the integrity of our services, we have implemented specific limitations on unauthenticated mail sent via PHP.
Understanding the Limitation
To maintain high email deliverability standards and prevent abuse, Hostinger limits outgoing emails sent through unauthenticated methods like php mail(). These measures are in place to:
Protect email reputation: Emails sent this way often skip necessary authentication (SPF, DKIM, and DMARC) checks, making these messages more likely to be filtered as spam.
Ensure security: Spammers often exploit basic PHP mail functions to send bulk emails. By requiring stronger authentication methods, we help protect you and your users.
As a result, if you're using php mail() or similar simple mail functions, you may find that some emails are not being delivered as expected if they exceed our limits of:
Per minute: Max 10 emails
Daily: Max 100 emails
How to Improve Email Sending
Instead of using basic PHP functions, we strongly recommend sending emails via SMTP — a more secure and authenticated method. There are two easy ways to do this:
PHPMailer or similar libraries [How to use PHPMailer to send emails]
SMTP plugins, such as WP Mail SMTP [What Is WordPress SMTP... or Mail for Laravel]
Since SMTP includes proper authentication, it increases the chance your emails reach inboxes while adhering to the email plan's outgoing limits. If you have our Business Starter or Business Premium email, you will have at least a 10-times higher limit of daily outgoing messages, which means more prospects for inquiries on your website.
Monitor with the Sendmail Log
If you're sending emails through PHP scripts, it's crucial to monitor the number of emails sent especially when hitting limits.
To help with that, each hosting account now includes a Sendmail rate limit log. This log lets you:
See which email addresses are sending the most
Check when rate limits are triggered
Track how fast the rate is dropping back toward normal
The log is available in your File Manager and is automatically updated hourly. Log path:
/home/username/.logs/exim.log
Example output:
[2025-05-13 03:17:22] RATE LIMIT EXCEEDED - Mailbox: email@domain.com - Rate: 2935.7 (daily)
[2025-05-13 03:17:22] RATE LIMIT EXCEEDED - Mailbox: noreply@domain.com - Rate: 2936.7 (daily)
How to use the logs:
Timestamp: [2025-05-13 03:17:22]
Mailbox: email@domain.com
Sending rate: 2935.7
Limit type: (daily or per-minute)
This means email@domain.com was sending at a rate of 2935.7 emails/day, above the 100 daily limit.
How the Limit Resets
The rate limit gradually resets as sending activity slows down. For example:
If no emails are sent for a while, the rate decreases. As the account nears compliance, you’ll see fewer "RATE LIMIT EXCEEDED" lines.
The restriction is automatically lifted once the rate drops below the allowed limit (100/day or 10/minute).
💡 Tip: Check the log over time to:
Identify which email accounts are sending the most
Spot peak sending times
Know when the limit is close to resetting
This helps you take timely action — switch high-volume accounts to SMTP or adjust the timing of automated emails.