【问题标题】:Laravel 5 multiple mail driversLaravel 5 多个邮件驱动程序
【发布时间】:2015-05-13 18:24:23
【问题描述】:

在 laravel 5 上是否可以有多个邮件驱动程序?

我问的原因是因为我正在 Laravel 5 中构建一个应用程序并且我正在使用 mandrill。我希望当用户通过网站与我联系时使用我的托管 smtp,以及当我向我的成员发送电子邮件时使用 mandrill。到目前为止,山魈都被用于两种方式,因为它是我的应用程序中的默认驱动程序。

谢谢

【问题讨论】:

  • 你为什么不把 Mandrill 用于所有事情呢?似乎会容易得多,让我们到处乱逛......?
  • Mandrill 不是免费的。他们只允许免费发送 12000 封电子邮件。这就是为什么我只想在发送电子邮件时使用 Mandrill,但当访客向我或彼此发送电子邮件时,我想使用免费服务。反正我找到了解决办法

标签: laravel laravel-5 swiftmailer


【解决方案1】:

来自Laravel version 7.x docs:“通过特定邮件程序发送邮件”部分,您现在可以说明发送电子邮件时要使用的邮件驱动程序。您只需在app/config/mail.php 中正确配置所有连接和凭据即可。配置完成后,您可以通过mailer() 函数指定驱动程序的名称,如下所示:

Mail::mailer('postmark')
    ->to($request->user())
    ->send(new OrderShipped($order));

我希望它对某人有所帮助。

【讨论】:

    【解决方案2】:

    请看这个项目:https://github.com/kevinzheng/laravel-switchable-mail,只需安装和配置它,它会在运行时自动保留和切换不同的邮件驱动程序。

    【讨论】:

      【解决方案3】:

      我找到了解决方案。我构建了两个名为 Mailer 和 secondaryMailer 的类。 mailer 类使用我正在使用的默认 laravel 邮件(mandrill)。 secondaryMailer 类使用 gmail 或您想要使用的任何驱动程序。这是secondaryMailer类的代码

       use Illuminate\Support\Facades\Mail;
       use Swift_Mailer;
      
       class SecondaryMailer {
      
      public function Send($view, array $data, array $params)
      {
          // Backup your default mailer
          $backup = Mail::getSwiftMailer();
      
          // Setup your gmail mailer
          $transport = \Swift_SmtpTransport::newInstance('smtp.gmail.com', 587, 'tls');
          $transport->setUsername('Your-gmail-username');
          $transport->setPassword('Your-Password');
          // Any other mailer configuration stuff needed...
          $gmail = new Swift_Mailer($transport);
      
          // Set the mailer as gmail
          Mail::setSwiftMailer($gmail);
      
          // Send your message
          Mail::send($view, $data, function($message) use($params)
          {
              $message->from($params['email'])->to($params['toEmail'])->subject($params['subject']);
          });
      
          // Restore your original mailer
          Mail::setSwiftMailer($backup);
      
      }
      
      }
      

      这是我找到解决方案的帖子。感谢博格丹 multiple mail configurations

      【讨论】:

      • 你的方法很好,但对Mail::queue($mail)不起作用,你知道为什么吗?
      猜你喜欢
      • 2015-05-09
      • 2017-08-11
      • 1970-01-01
      • 1970-01-01
      • 2016-04-20
      • 2016-05-16
      • 1970-01-01
      相关资源
      最近更新 更多