How to Send Mail Using SMTP in PHP



In the tutorial of web development, sending emails programmatically is a common task, whether it's for user registration, password resets, or notifications. SMTP (Simple Mail Transfer Protocol) is a widely used protocol for sending emails over the internet. In this guide, we'll walk you through the process of installing SMTP using Composer and sending emails with PHP.

Step 1: Installing Composer

Composer is a dependency manager for PHP that simplifies the process of managing PHP libraries and packages. Before we begin, make sure you have Composer installed on your system. If not, you can download and install Composer from

Step 2: Setting up a PHP Project

Create a new directory for your PHP project or navigate to an existing one in your terminal or command prompt.

mkdir my_smtp_project
cd my_smtp_project

Step 3: Installing PHPMailer via Composer

PHPMailer is a popular and feature-rich email library for PHP, making it easy to send emails using SMTP. We'll use Composer to install PHPMailer and manage its dependencies. Run the following command in your project directory:

composer require phpmailer/phpmailer

Composer will download and install PHPMailer and its dependencies into your project's `vendor` directory.

Step 4: Setting up SMTP Configuration

Now, let's create a PHP script to send emails using SMTP. First, you need to gather your SMTP server details. These include the SMTP host, port, username, password, and encryption method (if any). Here's a basic example of how you can set up SMTP configuration using PHPMailer:

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\Exception;

require 'vendor/autoload.php';

// Instantiation and passing `true` enables exceptions
$mail = new PHPMailer(true);

try {
    // SMTP configuration
    $mail->Host = '';
    $mail->SMTPAuth = true;
    $mail->Username = 'your_smtp_username';
    $mail->Password = 'your_smtp_password';
    $mail->SMTPSecure = 'tls'; // Enable TLS encryption, `ssl` also accepted
    $mail->Port = 587; // TCP port to connect to

    // Sender and recipient
    $mail->setFrom('[email protected]', 'Your Name');
    $mail->addAddress('[email protected]', 'Recipient Name');

    // Email content
    $mail->Subject = 'Test Email via SMTP';
    $mail->Body    = 'This is a test email sent via SMTP using PHPMailer.';

    // Send email
    echo 'Email has been sent successfully!';
} catch (Exception $e) {
    echo 'Message could not be sent. Mailer Error: ', $mail->ErrorInfo;

In this script:

  • We include PHPMailer's autoloader.
  • Set up SMTP configuration parameters such as host, username, password, encryption method, and port.
  • Define the sender and recipient email addresses.
  • Specify the email subject and body content.
  • Finally, attempt to send the email and handle any exceptions that may occur. Make sure to replace the placeholder values with your actual SMTP server details and email addresses.

Step 5: Testing the Email Sending Script

Save the PHP script in your project directory and run it using a web server that supports PHP. You can use Apache, Nginx, or any other web server of your choice. Navigate to the URL where you've placed the script in your web browser. If everything is configured correctly, you should see a message indicating that the email has been sent successfully.


In this tutorial, we've learned how to install SMTP using Composer and send emails using PHP with the help of PHPMailer. Sending emails programmatically opens up a wide array of possibilities for communication and notification within web applications. With PHPMailer, the process becomes streamlined and robust, allowing developers to focus on building great applications without worrying about the intricacies of email delivery. Happy coding and happy emailing!