Today, I'll demonstrate how to send an email using Symfony's Mailer component in PHP.
Step 1: Install the Required Library
First, install the Symfony Mailer library with the following command:
composer require symfony/mailer
Step 2: Set Up Email Configuration in PHP
After installing the library, you can configure the email sender and recipient details in your PHP code as shown below:
use Symfony\Component\Mailer\Transport; use Symfony\Component\Mailer\Mailer; use Symfony\Component\Mime\Email; $transport = Transport::fromDsn('smtp://localhost'); $mailer = new Mailer($transport); $email = (new Email()) ->from('hello@example.com') ->to('you@example.com') //->cc('cc@example.com') //->bcc('bcc@example.com') //->replyTo('fabien@example.com') //->priority(Email::PRIORITY_HIGH) ->subject('Time for Symfony Mailer!') ->text('Sending emails is fun again!') ->html('<p>See Twig integration for better HTML integration!</p>'); $mailer->send($email);
Optional: Use Gmail SMTP Settings
To use Gmail’s SMTP, modify the $transport configuration as shown below:
$mail_from = "example@example.com"; $pass = urlencode("password"); $mail_to = "example@example.com"; // Chúng ta có thể thêm mail cc vào một mảng $mail_cc_array=array( "example12@example.com", "example23@example.com", ); $transport = Transport::fromDsn("smtp://{$mail_from}:{$pass}@smtp.gmail.com:587?encryption=tls");
Step 3: Set Up an Email Template with Twig
If you’d like to use an HTML template for your email, install Twig using the following command:
composer require twig/twig
Then, configure Twig to load templates:
use Twig\Environment; use Twig\Loader\FilesystemLoader; $loader = new FilesystemLoader(__DIR__ . '/Views/templates'); $twig = new Environment($loader); // date email $templateData = [ 'subject' => 'LẬP TRÌNH WEBSITE | HOANGUYENIT', 'name' => 'Hoà Nguyễn Coder', 'message' => 'Chuyên trang chia sẻ các kiến thức liên quan đến. Lập Trình Website và Phát triển Website', ]; // Render data email to template $htmlContent = $twig->render('email_template.html.twig', $templateData);
Full Example Code
Here’s the complete code to send an email in PHP:
// Install the library with: composer require symfony/mailer require_once "Config/database.php"; // you change it "vendor/autoload.php" use Symfony\Component\Mailer\Transport; use Symfony\Component\Mailer\Mailer; use Symfony\Component\Mime\Email; use Twig\Environment; use Twig\Loader\FilesystemLoader; // Configure Twig $loader = new FilesystemLoader(__DIR__ . '/Views/templates'); $twig = new Environment($loader); // Email data $templateData = [ 'subject' => 'WEB DEVELOPMENT | HOANGUYENIT', 'name' => 'Hoà Nguyễn Coder', 'message' => 'Sharing insights and knowledge about web development and design.', ]; // Render email content $htmlContent = $twig->render('email_template.html.twig', $templateData); // Gmail email & password setup $mail_from = "example@example.com"; $pass = urlencode("password"); $mail_to = "recipient@example.com"; // CC emails $mail_cc_array = [ "example12@example.com", "example23@example.com", ]; $transport = Transport::fromDsn("smtp://{$mail_from}:{$pass}@smtp.gmail.com:587?encryption=tls"); $mailer = new Mailer($transport); $email = (new Email()) ->from($mail_from) ->to($mail_to) //->cc('cc@example.com') ->attachFromPath(__DIR__ . "/Note.txt") ->priority(Email::PRIORITY_HIGH) ->subject($templateData['subject']) ->html($htmlContent); // Add each CC email foreach ($mail_cc_array as $ccEmail) { $email->addCc($ccEmail); } try { $mailer->send($email); echo "Email sent successfully!"; } catch (\Exception $e) { echo "Failed to send email: " . $e->getMessage(); }
You can view the complete code on Github or watch the guide here:
TikTok
Youtube
Top comments (2)
wow amazing .
Thanks bro