首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >设置Mandrill模板Laravel

设置Mandrill模板Laravel
EN

Stack Overflow用户
提问于 2014-08-20 21:15:51
回答 2查看 4.3K关注 0票数 5

我试图在默认的Laravel4Mailer中发送一封Mandrill电子邮件,我想设置模板并将数据发送给Mandrill。我宁愿不要在我的Laravel中使用本地文件,我把所有这些设置在Mandrill的内部。这就是我在拉勒维尔的场景:

代码语言:javascript
复制
    Mail::send('emails.test',[],function($message)
    {
        $message->to(Input::get('email'), 'John Smith')->subject('Welcome!');
    });
    return 

这发送电子邮件从我的“测试”视图内的“电子邮件”,它应该。在普通PHP中,使用Mandrill库可以将其发送到我想要的模板。

代码语言:javascript
复制
$message = array(
'subject' => 'Subject redacted',
'from_email' => $main_email,
'to' => array(array('email' => $to_email)),
'merge_vars' => array(array(
    'rcpt' => $to_email,
    'vars' =>
    array(
        array(
            'name' => 'DETAIL',
            'content' => $detail),
            array(
            'name' => 'ERROR_AMOUNT',
            'content' => '$'.$trans_amount)
            ,
            array(
            'name' => 'CO_NAME',
            'content' => $business_name),

            array(
            'name' => 'SMS',
            'content' => $sms)
))));

$template_name = 'Test Email';

$template_content = array(
array(
    'name' => 'main',
    )
);

$response = $mandrill->messages->sendTemplate($template_name, $template_content, $message);
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-08-20 21:52:04

使用Illuminate\Mail\Mailer似乎不可能做到这一点。它看起来像是芒钻运输专门使用send-raw Mandrill API端点。

这给您留下了两个选项:在Mailer中实现自己的传输和工作,或者在Mailer系统之外工作。如果您要使用后者,您可能最好只使用官方库。

如果您想实现自己的传输,请查看Swift_Transport接口。这并不是一个完美的匹配,因为您正在尝试做一些Mailer从未打算做的事情,但是有了足够的黑客攻击,您就可以启动并运行一些东西。您可能需要在Message类上使用未定义的成员,例如:

代码语言:javascript
复制
$message->template = "template_name";
$message->content = array(/* content here */);
$message->message = array(/* message here */);

// MandrilTemplateTransport.php
public function send(Swift_Mime_Message $message, &$failedRecipients = null)
{
    $this->messages->send($message->template, $message->content, $message->message);
}

这绝对不是一个理想的办法,而是一个可行的解决办法。我认为你只需使用Mailer系统外的Mandrill库即可。

票数 3
EN

Stack Overflow用户

发布于 2014-09-03 14:15:02

作为替代,您可以使用Laravel的Mandrill函数设置和X模板头。

代码语言:javascript
复制
Mail::send('emails.test', [], function($message) use ($mergevars)
{
    $headers = $message->getHeaders();
    $headers->addTextHeader('X-MC-MergeVars', json_encode($mergevars));
    $headers->addTextHeader('X-MC-Template', 'my-template');

    $message->to(Input::get('email'), 'John Smith')->subject('Welcome!');
});

请注意,我还没有对此进行测试--只是看一下我在这里读到的内容:使用SMTP标头自定义邮件

您可能需要使用addTextHeader以外的其他内容--检查Swiftmailer文档,以确定如何为正在设置的数据添加正确的标头类型。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25414561

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档