我想使用 symphony mailer Transport 将以下代码转换为 symphony mailer。但如果不使用 twig 概念,我就无法在 symphony mailer 中添加现有的模板。
现有代码:
$data = array(.....);
$subject = "Test Email";
Mail::send('mail.invitation', $data, function($message)
{
$message
->to($this->toEmail)
->from($this->fromEmail)
->subject($subject);
});
同样:
$transport = Transport::fromDsn(env('MAILER_DSN'));
$mailer = new Mailer($transport);
$data = array(.....);
$subject = "Test Email";
$email = (new Email())
->from($this->fromEmail)
->to($this->toEmail)
->priority(Email::PRIORITY_HIGH)
->subject($subject)
->text('Sending emails')
->html('mail.invitation', $data);
$mailer->send($email);
请帮助我并提前致谢。
要将现有代码转换为使用 Symfony Mailer 并包含 HTML 模板,您可以按照以下步骤操作。由于您不想使用 Twig,因此您可以通过手动嵌入带有动态数据占位符的 HTML 模板来创建电子邮件内容。
以下是如何实现此目标的示例:
创建带有占位符的 HTML 模板:您可以使用将被动态数据替换的简单占位符,而不是使用 Twig。
<!-- mail/invitation.html -->
<!DOCTYPE html>
<html>
<head>
<title>Invitation</title>
</head>
<body>
<p>Hello, {{ name }}!</p>
<p>You are invited to our event on {{ event_date }}.</p>
<p>Best regards,<br>{{ sender_name }}</p>
</body>
</html>
加载模板并替换占位符:在 PHP 代码中,加载 HTML 模板并用实际数据替换占位符。
<?php
use Symfony\Component\Mailer\Transport;
use Symfony\Component\Mailer\Mailer;
use Symfony\Component\Mime\Email;
// Load HTML template
$templatePath = 'path/to/mail/invitation.html';
$templateContent = file_get_contents($templatePath);
// Data to be replaced in the template
$data = [
'name' => 'John Doe',
'event_date' => 'June 15, 2024',
'sender_name' => 'Event Organizer'
];
// Replace placeholders with actual data
foreach ($data as $placeholder => $value) {
$templateContent = str_replace('{{ ' . $placeholder . ' }}', $value, $templateContent);
}
// Email subject
$subject = "Test Email";
// Create the Transport and Mailer instances
$transport = Transport::fromDsn($_ENV['MAILER_DSN']);
$mailer = new Mailer($transport);
// Create the Email instance
$email = (new Email())
->from('[email protected]')
->to('[email protected]')
->priority(Email::PRIORITY_HIGH)
->subject($subject)
->html($templateContent);
// Send the email
$mailer->send($email);
在此方法中:
加载 HTML 模板:从文件中读取模板。 替换占位符:使用 str_replace 将模板中的占位符替换为 $data 数组中的实际值。 创建并发送电子邮件:使用填充的模板内容创建电子邮件并使用 Symfony Mailer 发送。 确保根据您的具体要求调整路径和数据。此方法避免使用 Twig,同时仍然允许您使用具有动态内容的 HTML 模板。