在 common/config/main-local.php中写入以下代码配置 Mail代理
return [ 'components' => [ ...//your code, //以下是 mail 的配置 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => '@common/mail', 'transport' => [ 'class' => 'Swift_SmtpTransport', //我用的是QQ 的代理,所以这里是 QQ 的配置信息 'host' => 'smtp.qq.com', 'port' => 587, 'encryption' => 'tls', //这部分信息不应该公开,所以后期会由数据库中拿取 'username' => '你的 QQ 号', 'password' => '你的 QQ 密码', ], //发送的邮件信息配置 'messageConfig' => [ 'charset' => 'utf-8', 'from' => ['83398365@qq.com' => 'BugAsk'] ], ],' ] ];
接下来就可以发送邮件了
#不使用模板 $mail = Yii::$app->mailer->compose(); $mail->setTo('发送的邮箱'); $mail->setSubject('邮件的标题'); $mail->setHtmlBody('邮件内容,这里可以使用 HTML 代码'); $mail->send();//发送 #使用模板 //compose 与控制器中的 render 方法参数方式相同. $mail = Yii::$app->mailer->compose('模板文件名称', ['key' => $value]); ... //$mail->setHtmlBody(); 在使用模板时候不要调用该方法否则会覆盖掉模板 $mail->send();
动态设置 mail 配置信息
#1. 先从数据中拿到你的配置信息,默认你已经会CRUD 了。 #2. 开始设置 HOST 等信息。 $mail = Yii::$app->mailer; $mail->transport = $mail->transport->newInstance($host, $port, 'tls'); $mail->transport->setUsername('你的邮箱帐号'); $mail->transport->setPassword('你的邮箱密码');