安装扩展:
https://www.yiiframework.com/extension/yiisoft/yii2-swiftmailer
安装此扩展的首选方法是通过composer。
方法1:php composer.phar require --prefer-dist yiisoft/yii2-swiftmailer
方法2:composer.json中的require部分,添加"yiisoft/yii2-swiftmailer": "~2.1.0"
使用:
首先、在main-loacl.php中(生产环境的配置)的componets数组中增加:
'mailer' => [
'class' => 'yii\swiftmailer\Mailer',
'viewPath' => '@common/mail',
'useFileTransport' => false, //这句一定有,false发送邮件,true只是生成邮件在runtime文件夹下,不发邮件
'transport' => [
'class' => 'Swift_SmtpTransport',
'host' => 'smtp.163.com', //每种邮箱的host配置不一样
'username' => '***@163.com',
'password' => '******',
'port' => '25',
'encryption' => 'tls',
],
'messageConfig'=>[
'charset'=>'UTF-8',
'from'=>['***@163.com'=>'发件人姓名']
],
],
步骤二、开始使用
/**
* 发送邮件
*
* @param string $from 发送邮箱
* @param string $to 收件邮箱
* @param string $subject 主题
* @param string $body 邮件内容,默认使用html
*
* @return bool
*/
public function sendEmail(string $from, string $to, string $subject, string $body): bool
{
if( empty($from) || empty($to) ) {
return false;
}
$mailer = Yii::$app->mailer->compose();
$mailer->setFrom($from);
$mailer->setTo($to);
$mailer->setSubject($subject);
$mailer->setHtmlBody($body);
$status = $mailer->send(); //也可以使用$mailer->sendMultiple() 方法批量发送邮件
return $status;
}
$mailer = Mailer::instance();
$status = $mailer->sendEmail($fromMailbox, $toMailbox, $emailSubject, $emailOneBody);