You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Symfony Mailer使用TemplatedEmail发模板邮件报错:缺少内容部分

解决Symfony Mailer使用TemplatedEmail报错的问题

核心原因

你手动实例化Mailer时,没有为TemplatedEmail配置Twig模板渲染器。TemplatedEmail需要借助Twig解析并渲染模板内容,直接创建的Mailer实例不具备这个能力,导致模板无法转化为可识别的HTML内容,最终触发"A message must have a text or an HTML part or attachments."错误。

正确实现方式

方式1:依赖注入使用Mailer(推荐)

在控制器或服务中直接注入MailerInterface,Symfony会自动配置好Twig渲染环境:

use Symfony\Component\Mailer\MailerInterface;
use Symfony\Component\Mime\Address;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;

class YourController extends AbstractController
{
    public function sendEmail(MailerInterface $mailer, string $userEmail)
    {
        $email = (new TemplatedEmail())
            ->from(new Address('my_address', 'NAME'))
            ->to($userEmail)
            ->subject('Some text...')
            ->htmlTemplate('user/email.html.twig');

        $mailer->send($email);
    }
}

若注入后仍无法发送,检查以下内容:

  • 确认已安装依赖包:
    composer require symfony/twig-bundle symfony/mailer
    
  • 验证.env中MAILER_DSN配置正确性,可通过命令测试:
    php bin/console mailer:test your-test-email@example.com
    

方式2:手动实例化时配置Twig渲染器

若必须手动创建Mailer,需手动传入Twig渲染器:

use Symfony\Component\Mailer\Mailer;
use Symfony\Component\Mailer\Transport;
use Symfony\Bridge\Twig\Mime\TemplatedEmail;
use Symfony\Bridge\Twig\Mime\BodyRenderer;
use Twig\Environment;

// 从容器获取Twig环境实例
$twig = $container->get(Environment::class);
$bodyRenderer = new BodyRenderer($twig);

$transport = Transport::fromDsn($_ENV['MAILER_DSN']);
$mailer = new Mailer($transport, null, $bodyRenderer);

$email = (new TemplatedEmail())
    ->from(new Address('my_address', 'NAME'))
    ->to($userEmail)
    ->subject('Some text...')
    ->htmlTemplate('user/email.html.twig');

$mailer->send($email);

额外排查点

  • 确认模板路径user/email.html.twig存在于templates/目录下,Linux环境需注意文件名大小写匹配。
  • 可添加文本模板作为 fallback,排查模板渲染问题:
    $email->textTemplate('user/email.txt.twig');
    

内容的提问来源于stack exchange,提问作者Andrei Nicolescu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 15:53:19