To comply with current SPAM standards involved with the PHP ‘nobody’ user, our newer servers that run PHP under Apache do not allow PHP to send mail via the mail() function, which is the default for most software. In order for you to be able to send mail you’ll need to configure the software to use SMTP with authentication, similar to how a mail client is set up. Most pre-bundled software packages like Joomla, phpBB, and other CMS’s have an option or plugin that will allow you to use SMTP instead of mail() or sendmail. Custom mailing scripts can usually be programmed to use SMTP using PEAR or the popular phpMailer class:
For a phpMailer tutorial, please see this guide:
Using phpMailer to Send Mail through PHP
To use SMTP you will need to use a valid email address that you’ve created in your cPanel. Most software will ask for these settings:
Hostname: localhost OR mail.example.com
Username: [email protected]
Password: Your email password
Port: 25 / No SSL
Port 465 / SSL
Thoughts on “Why won’t my PHP app send mail?”
I cannot get SMTP authentication to work. Does the user name and password used to authenticate need to match the sender’s address?
Hello Len – SMTP authentication is based on each account sending email out. So, yes, the credentials must match the sender’s email address.
Phpmailer is now here:
Jim, thank you very much for the updated information! I have updated the article with the new URL.