Symfony Mailer可独立用于纯PHP项目,安装执行composer require symfony/mailer,配置MAILER_DSN环境变量,用Transport::fromDsn创建传输,Email类构建邮件,Mailer发送;推荐Mailtrap或SendGrid测试,注意安全、异常处理与Twig模板集成。

直接上手 Symfony Mailer,不需要绕弯子。它不是必须绑定完整 Symfony 框架才能用的组件,纯 PHP 项目也能装、能发、能跑通。
安装只要一条命令
在你的项目根目录运行:
- composer require symfony/mailer
Composer 会自动拉取核心包和依赖(比如 symfony/mime),不需要手动装 SwiftMailer 或其他旧组件——Mailer 是 Symfony 5.4+ 官方主推的替代方案。
配置传输方式:从 .env 开始
最常用的是 SMTP。在 .env 文件里加一行:
- MAILER_DSN=smtp://user:pass@smtp.example.com:587?encryption=tls&auth_mode=login
注意:
• Gmail 不推荐新手直接用,OAuth2 配置复杂,容易卡在权限或应用密码环节;
• 开发阶段建议用 Mailtrap(免费沙箱)或 SendGrid(有免费额度);
• 端口和加密参数必须匹配服务商要求(如 465 + ssl,或 587 + tls)。
写代码发第一封邮件
不用写控制器也能测试。新建一个 test-mail.php:
- 引入 autoloader:
require_once 'vendor/autoload.php'; - 创建传输:
$transport = \Symfony\Component\Mailer\Transport::fromDsn($_ENV['MAILER_DSN']); - 创建邮件:
$email = (new \Symfony\Component\Mime\Email())
→->from('no-reply@yourapp.com')
→->to('test@example.com')
→->subject('Hello!')
→->text('Plain text body')
→->html('<p>HTML body</p>'); - 发送:
(new \Symfony\Component\Mailer\Mailer($transport))->send($email);
执行 php test-mail.php,收件箱见真章。
进阶提示:别跳过这三步
-
环境变量安全:不要把密码写死在代码或 YAML 里,始终走
%env(MAILER_DSN)%引用 -
错误处理:包裹
send()在 try/catch 里,捕获\Symfony\Component\Mailer\Exception\TransportExceptionInterface -
模板化内容:搭配 Twig 使用
\Symfony\Bridge\Twig\Mime\TemplatedEmail,让 HTML 邮件可维护
不复杂但容易忽略。


















