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 (0)