【问题标题】:Send email from a separated file using Swift Mailer使用 Swift Mailer 从单独的文件发送电子邮件
【发布时间】:2016-03-29 22:01:20
【问题描述】:

使用 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 电子邮件会看起来很乱。

【问题讨论】:

  • 如果你使用 Laravel 为什么必须直接使用 Swift_Mailer
  • @Digitlimit 因为,我必须从不同的 smtp 服务器和电子邮件地址发送不同的电子邮件。

标签: php email laravel blade swiftmailer


【解决方案1】:

没问题。

代替:

->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

【讨论】:

  • 非常感谢兄弟。电子邮件按我的意愿发送,但以纯文本格式发送。我只是添加text/html 作为第二个参数。像这样:-&gt;setBody(view('emails.billRequest',$data)-&gt;render(),'text/html');
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-30
  • 1970-01-01
  • 2018-02-11
  • 1970-01-01
  • 2022-11-03
  • 1970-01-01
相关资源
最近更新 更多