PHP is one of the most popular web development languages and a popular way to create dynamic web apps. In this article, we’re going to help you painlessly configure the mail function in your application.
So let us start! There are two basic ways of sending emails with PHP: a built-in mail function and external mail packages.
PHP’s built-in mail function () is very simple, and it provides limited functionality for sending emails. You won’t be able to add attachments to your email, and building a beautiful HTML template with embedded images will be a tricky task to accomplish .
The other side of the PHP mail function () coin is that the email is sent from your web server, which may cause issues with deliverability due to security concerns such as suspicion of spam and blacklisting. The best way to overcome this problem is sending messages via an SMTP server, however, this functionality is limited as well. PHP mail() does not usually allow you to use the external SMTP server and it does not support SMTP authentication.
Here’s what you can do with PHP’s built-in mail function():
It is suitable for simple, mostly text-based notifications in your local environment. If you need to communicate with your app’s users, it is better to install an external mailer package.
If you are still committed to the PHP built-in mail function() and are ready to accept the challenge, let’s take a look at the basic code and its main parameters.
The PHP mail syntax is pretty simple:
<?php
mail($to_email_address,$subject,$message,[$headers],[$parameters]);
?>
It uses the following parameters:
Note that headers are optional, except for the “from” header: it must be specified, otherwise, you will receive an error message like Warning: mail(): “sendmail_from” not set in php.ini or custom “From:” header missing.
You can use additional headers to change the mail “From” address and set the “Reply to” address.
For more details and additional parameters, refer to the
The body of the message can be written in HTML. However, as we’ve mentioned above, it should be simple. In the PHP mail function(), the HTML part will look like this:
$message = '
<html>
<head>
<title>Review Request Reminder</title>
</head>
<body>
<p>Here are the cases requiring your review in December:</p>
<table>
<tr>
<th>Case title</th><th>Category</th><th>Status</th><th>Due date</th>
</tr>
<tr>
<td>Case 1</td><td>Development</td><td>pending</td><td>Dec-20</td>
</tr>
<tr>
<td>Case 1</td><td>DevOps</td><td>pending</td><td>Dec-21</td>
</tr>
</table>
</body>
</html>
';
It’s important to remember that to send HTML mail, you need to set the Content-type header:
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';
Where do I specify the SMTP settings? This is a fair question. Go to the PHP installation folder and configure them in the “php.ini” file. But this will only work for localhost or Xmapp like solutions because as we have already mentioned, PHP mail function does not support SMTP authentication and doesn’t allow sending messages via external servers.
There are some other, rather haphazard options but we won’t promote them here. Alternatively, we recommend using external PHP mail packages for sending emails via an external SMTP server.
As we have already mentioned, the native PHP mail() function has limited functionality when it comes to mass sending. For example, it is not designed for creating
But since PHP is still one of the
Pear Mail
Here is what you can do with Pear Mail:
Swift Mailer
Here is what you can do with Swift Mailer:
Besides that, Swift Mailer offers enhanced security and handles large attachments and images with low memory usage.
PHPMailer
And finally,
Here is what you can do with PHPMailer:
create complex HTML/multipart templates
add attachments and embedded images
send emails via authenticated SMTP.
PHPMailer is protected against header injection attacks and automatically validates emails.
In this article, we have described the basic PHP email sending principles, syntax, and parameters. Moreover, we have reviewed the main ways of sending emails with PHP: its built-in mail function and the most popular external mail packages. PHPMailer and Swift Mailer are standard libraries for PHP email sending today, and PEAR Mail is still widely used.
Choose your option according to your current needs and preferences and test your emails beforehand. For email experiments - create an account at
Check the full
Also Published Here