** If you are using any dedicated server, cloud instance (like AWS, Linode, Digital Ocean Droplet etc.) and php mail() function or wp_mail() isn’t working for you? If yes, then this resource can help you **
First we need to understand how php mail() works.
PHP mail function invokes any mail server to send the email.
On *nix it invokes the
sendmail binary, which then uses the mail configuration to route the email. On Windows, it sends to a SMTP server. In both cases the sysadmin sets up the mail system.
We will talk about Linux here. Although sendmail isn’t that reliable for production mails but for development servers it is best and quickest choice.
So if php mail() isn’t working on your server then possibly sendmail or other smtp isn’t configured behind the scene. So to make mail function work, we need to fix what is responsible for sending emails.
- check if your php.ini is correctly calling sendmail.
- If this is done then next step is to fix sendmail or install it if not already.
Install Sendmail on Debian/Centos
- Follow this guide: https://lukepeters.me/blog/getting-the-php-mail-function-to-work-on-ubuntu
In any case it didn’t install on ubuntu: Stack Overflow Answer
Another issue we might face is dpkg not working:
“dpkg frontend is locked by another process”
this is because initial install command didn’t finish successfully. Now we need to kill the process which is using dpkg and occupied it.
Check this or manually list all processes to find out the id:
sudo ps -a
The Kill it using: kill -9 PID
- Then follow first step again to install sendmail.
** Gmail, Hotmail etc. don’t accept emails if no proper authentication is used. So:
1. ADD SPF record to your DNS for your sever’s IP address.
2. DKIM Authentication.
There are several articles out there for setting up DKIM for sendmail but only this one worked for me.
Configure DKIM with Sendmail on Debian
PDF in case reference website is down: Download
** Read the comments in case of any errors.
If this is done correctly then php mail function will start sending emails. (may be in spam folder)