Yii2 使用Mailer发送邮件
修改配置文件
再config/web.php文件添加mailer配置,添加到components下
'components' => [
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
//'viewPath' => '@common/mail',
'transport' => [
'class' => 'Swift_SmtpTransport',
//我用的是QQ 的代理,所以这里是 QQ 的配置信息
'host' => 'smtp.qq.com',
'port' => 25,
'encryption' => 'tls',
'username' => '你的QQ邮箱',
'password' => '在开启SMTP服务后,生成的授权码,不是QQ密码',
],
//发送的邮件信息配置
'messageConfig' => [
'charset' => 'utf-8',
//'from' => ['你的QQ邮箱' => '显示名称']
],
],
],
控制器调用
<?php
namespace app\controllers;
use Yii;
use yii\filters\AccessControl;
use yii\web\Controller;
use yii\web\Response;
use yii\filters\VerbFilter;
use app\models\SfEfNetwork;
use yii\web\Session;
use yii\log\Logger;
use yii\swiftmailer\Mailer;
class EmailController extends Controller
{
public function actionSend()
{
//不使用模板
$mail = Yii::$app->mailer->compose();
$mail->setTo('收件人邮件');
$mail->setSubject('邮件的标题');
$mail->setTextBody('邮件内容文本形式');
$row = $mail->send();//发送
}
//模板发送
public function actionIndex()
{
$mailer =Yii::$app->mailer;
$mailer->setTransport([
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.qq.com',
'username' => '发件人邮件',
'password' => '在开启SMTP服务后,生成的授权码,不是QQ密码',
'port' => '25',
'encryption' => 'tls'
]);
$message = $mailer->compose()
->setFrom(['发件人邮件'=>'显示名称'])
->setTo(['收件人邮件'])
->setsubject('邮件的标题')
->setTextBody('邮件内容文本形式');
$row = $message->send();
}
}
如果状态返回1,但是没有收到邮件,则可能是发送邮箱没配置好SMTP服务,我这边是用QQ邮箱发送的,以下是QQ邮箱开启的方式。
1.点击左上角的设置,进入配置页面
2.选择账户找到 SMTP,开启服务
3.点击管理服务,点击生成授权码