如何在Yii2中使用swiftMailer

我终于无法理解如何在Yii2中使用swiftMailer扩展。 从这个问题来看,我没有发现问题,这个任务是微不足道的,但是直到最后我都听不懂。

有一些例子没有更详细地描述发送信件的所有周期或我不明白的东西:(

build立

return [ //.... 'components' => [ ...... 'mail' => [ 'class' => 'yii\swiftmailer\Mailer', 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'localhost', 'username' => 'username', 'password' => 'password', 'port' => '587', 'encryption' => 'tls', ], ], ] ]; 

发送

 Yii::$app->mail->compose() ->setTo($toEmail) ->setFrom([$this->email => $this->name]) ->setSubject($this->subject) ->setTextBody($this->body) ->send(); 

我想要得到一个具体的工作例子 。 谢谢。

PS我调整了域名loggingMX,DKIM,SPF添加。

UPD(一些答案)

在“From”字段中传递的电子邮件,默认放在“Return-path”字段中,必须是现有地址 。 有些提供商不允许从不存在的电子邮件地址发送邮件。

确保您已经在生产环境中初始化了您的应用程序,以从您的应用程序发送电子邮件,否则将被写入到邮件输出文件夹中。或手动编辑configuration文件,如下所示。

在common / main-local.php的组件部分

 'mail' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@backend/mail', 'useFileTransport' => false,//set this property to false to send mails to real email addresses //comment the following array to send mail using php's mail function 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.gmail.com', 'username' => 'username@gmail.com', 'password' => 'password', 'port' => '587', 'encryption' => 'tls', ], ], ], 

在你的控制器

  \Yii::$app->mail->compose('your_view', ['params' => $params]) ->setFrom([\Yii::$app->params['supportEmail'] => 'Test Mail']) ->setTo('to_email@xx.com') ->setSubject('This is a test mail ' ) ->send(); 

这应该工作! 希望对你有帮助!

你不需要在swiftmailer中使用SMTP传输,只要在configuration文件( app/config/web.php中的基本模板)中删除'useFileTransport' => true ,邮件就会stream通。

看看文档:

http://www.yiiframework.com/doc-2.0/ext-swiftmailer-index.html

警告:此选项不再可用,因为Mandrill是由Mailchimp购买的

有时可能是使用SwiftMailer不依赖于您的问题。 就像当我使用mail.ru电子邮件服务器。 我在laravel社区find解决scheme,并在Yii2中实现。

你可以使用像https://mandrillapp.com/ (每月12K电子邮件,250小时内免费)替代服务,并设置如下:

拉拉维尔社区/安装邮件与mandrill

 'host' => 'smtp.mandrillapp.com', 'username' => 'user@domain.name', 'password' => 'oDLKswXZIkry8634f1jCDg', // new generated API key by mandrill 'port' => '587', 'encryption' => 'tls', 

如果您使用的是Gmail邮件,您也可以面对安全问题。 您可以通过允许应用程序使用您的Gmail帐户来closures安全。

如果您使用Googlelogin,请使用以下链接:

https://www.google.com/settings/security/lesssecureapps

希望它会帮助别人

如果您使用的是基本模板,那么您需要添加

 'viewPath' => '@app/mail', 

到configuration

其实,你必须使用configuration密钥邮件而不是邮件

 'components' => [ ... 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'transport' => [ 'class' => 'Swift_SmtpTransport', 'host' => 'localhost', 'username' => 'username', 'password' => 'password', 'port' => '587', 'encryption' => 'tls', ], ], ... 

]