NOTE: This post is directed to students who took the Ultimate WordPress Plugin Course course Udemy course. But it can be applied for anyone who's in a similar situation.
By the end of Lecture 24, we should be able to send an email to the user confirming his/her subscription. We use the WordPress' built-in wp_mail() function (which actually uses the PHP function mail() under the hood to send the emails).
If you're using a web server in localhost like XAMPP or MAMP, then email sending won't work. You need to take a new approach in order to get this working. So let's get in to it.
First you need to install a new WordPress plugin called WP Mail SMTP. This plugin reconfigures the wp_mail() function to use SMTP instead of mail().
So go ahead and install this plugin and activate it. Then go to the plugin's settings page. You can click the link below the plugin name in the Plugin list or from the sidebar, select Settings and then Email.
Then you'll see a page like this.
Leave the From Email and From Name fields blank. Select the Send all WordPress emails via SMTP. for the Mailer option.
Now in order to send all WordPress emails via a SMTP server, you need to change some settings here. I'm gonna use Gmail's SMTP settings which I have listed below. But you can use any other SMTP server settings.
- SMTP Host: smtp.gmail.com
- SMTP Port: 465
- Encryption: Use SSL encryption.
- Authentication: Yes: Use SMTP authentication.
- Username: [your - entire - Gmail or Google Apps email address]
- Password: [your password for your Gmail or Google Apps email account]
Then click Save Changes to save the settings.
Wait, you think you're done? Not so fast! You need to enable access for less secure apps in your Google account. Don't worry, since you know what you're giving access to. Once you're done with developing and testing on localhost, you can turn this setting back on.
Now you can send a test email to check if everything's working fine. In the Send a Test Email section below, enter an email of your own and click Send Test. You should get an email with the subject WP Mail SMTP: Test mail to [email@example.com]. It should work but in any case if it fails, try turning this Google account setting called Allow access to your Google account on as well.
Now open up the page in your WordPress site where you have the New subscription form. Enter a name and an email (make sure to enter an email you own) and click Sign me up button. You should get a success message.
And check your inbox. You should have received the email.
That's it. This is how you send emails when you're on localhost.