Laravel 6项目通过Mailgun旧SMTP API发送MIME邮件时如何设置模板名称?
在Laravel 6中用Mailgun旧SMTP API指定模板名称的正确方法
要通过Mailgun的SMTP API调用模板,你需要用X-Mailgun-Template请求头指定模板的slug(即Mailgun控制台模板板块里的名称,不是显示名称)——你之前尝试的第一种方法是正确的,可能是没注意以下细节导致失败:
- 确保用模板的slug而非显示名:比如Mailgun控制台里显示的模板名为"用户注册欢迎信",对应的slug可能是
user-registration-welcome,必须用这个slug作为X-Mailgun-Template头的值。 X-Mailgun-Template-Variables头的值必须是JSON字符串,不能直接传数组。- 在Laravel 6的Mailable类中,可通过
withSwiftMessage方法添加这些自定义头,示例代码如下:
public function build() { return $this->view('emails.empty') // 传空视图即可,模板会自动替换内容 ->withSwiftMessage(function ($message) { $message->getHeaders()->addTextHeader( 'X-Mailgun-Template', 'your-template-slug-here' // 替换为你的模板slug ); $message->getHeaders()->addTextHeader( 'X-Mailgun-Template-Variables', json_encode([ 'username' => 'John Doe', 'verification_link' => 'https://your-domain.com/verify' ]) ); }); }
额外注意事项:
- 如果模板是纯文本类型,需确保邮件Content-Type设为
text/plain;HTML模板则设为text/html,Laravel默认会处理,有冲突时可手动指定。 - 无需在
X-Mailgun-Variables中添加template变量,也不用把模板名称放到正文里,这些操作都无效。
内容的提问来源于stack exchange,提问作者Maximilian Strehse
相关产品推荐
相关产品推荐

