使用Swift Mailer从单独的文件发送电子邮件

时间:2015-12-23 12:53:54

标签: php email laravel blade swiftmailer

使用Laravel Mailer,我们可以从单独的文件发送电子邮件。我们提到文件名是send()函数的第一个参数。举个例子:

Mail::send('emails.billRequest',$data, function($message){
    // rest of code
});

在上面的示例中,emails.billRequest是我要发送的文件名。这个过程对我很好,没问题。

我的问题是

目前我正在使用Swift Mailer。我的代码是:

$transport = \Swift_SmtpTransport::newInstance('smtp.email.com',587,'tls')
    ->setUsername('myemailaddress@email.com')
    ->setPassword('mypassword');

$mailer = \Swift_Mailer::newInstance($transport);

$message = \Swift_Message::newInstance('test subject')
    ->setFrom(['sender@email.com'=>'sender'])
    ->setTo(['reciver@email.com'=>'reciver'])
    ->setBody('<p>this is a test body</p>','text/html');

$result = $mailer->send($message);

这段代码也很完美。我的问题是,有没有办法将我的电子邮件的正文保存在一个单独的文件中?

setBody()内写一封长html电子邮件看起来会很混乱。

1 个答案:

答案 0 :(得分:2)

没问题。

而不是:

->setBody('<p>this is a test body</p>','text/html');

使用

->setBody(view('emails.billRequest', $data)->render());

结构:

view('emails.billRequest', $data)->render()

将生成您的Blade文件emails/billRequest.blade.php并将$data传递给模板并将其呈现为字符串,以便您现在可以将其用作电子邮件正文

修改

当然,如果我是你,我会在不需要时直接使用SwiftMailer重新考虑。