yii2中官方为了解决邮件发送问题,提供了swiftMailer扩展。
我们先来了解下什么是swiftMailer。
Swift是一个完全采用面向对象编码用于发送e-mail的PHP函数库。Swift不依赖于PHP的mail()函数,
因为用它发送多封邮件时会占用较高的服务器资源。Swift通过直接连到SMTP服务器或MTA能够更快,更高效地发送邮件。
官方文档上做出了简单的使用说明。我们也来参考下。
1.首先配置
在common/config/main-local.php 中配置
- return [
- //....
- 'components' => [
- 'mailer' => [
- 'class' => 'yii\swiftmailer\Mailer',
- 'viewPath' => '@common/mail',
- // send all mails to a file by default. You have to set
- // 'useFileTransport' to false and configure a transport
- // for the mailer to send real emails.
- 'useFileTransport' => false,
- 'transport' => [
- 'class' => 'Swift_SmtpTransport',
- 'host' => 'smtp.163.com',
- 'username' => '***@163.com',
- 'password' => '******',
- 'port' => '25',
- 'encryption' => 'tls',
- ],
- 'messageConfig'=>[
- 'charset'=>'UTF-8',
- 'from'=>['***@163.com'=>'礼']
- ],
- ],
- ],
- ];
2.控制器中
方法中调用:
- $mail= Yii::$app->mailer->compose();
- $mail->setTo('***@qq.com'); //要发送给那个人的邮箱
- $mail->setSubject("邮件主题"); //邮件主题
- $mail->setTextBody('测试text'); //发布纯文字文本
- $mail->setHtmlBody("测试html text"); //发送的消息内容
- var_dump($mail->send());
就这样就可以发送邮件了!注:如果一直报错,排除掉密码错误或者代码错误外,还有可能是网速原因!