参照于 http://www.manks.top/yii2_swiftMailer.html 直接上代码 一、配置文件web.php ``` 'mailer' => [ 'class' => 'yii\swiftmailer\Mailer', 'viewPath' => 'xx/mail', //根据实际情况配置 'useFileTransport' => false, 'transport' => [ //这里如果你是qq的邮箱,可以参考qq客户端设置后再进行配置 http://service.mail.qq.com/cgi-bin/help?subtype=1&&id=28&&no=1001256 'class' => 'Swift_SmtpTransport', 'host' => 'smtp.163.com', 'username' => 'XXX@163.com', //改成自己的用户名密码 'password' => 'XXX', 'port' => '994', //或者25端口 'encryption' => 'ssl', //或者tls ], 'messageConfig'=>[ 'charset'=>'UTF-8', 'from'=>['XXX@163.com'=>'发送人的名字'] ], ], ``` 二、基础用法 ``` public function actionSend(){ $mail= Yii::$app->mailer->compose(); $mail->setTo('XXX@qq.com'); //要发送给那个人的邮箱 $mail->setSubject("邮件主题"); //邮件主题 $mail->setTextBody('测试text'); //发布纯文字文本 $mail->setHtmlBody("测试html"); //发送的消息内容 var_dump($mail->send()); } ``` 三、发送多个邮件 ``` public function actionSendmult(){ $users = ['XXX@163.com','XXX@qq.com']; foreach($users as $user) { $messages[] = Yii::$app->mailer->compose() ->setTo($user) ->setSubject('测试主题') ->setHtmlBody('<h1>测试多邮件</h1>'); } $res = Yii::$app->mailer->sendMultiple($messages); if ($res){ echo 'success'; } } ``` 四、发送邮件用模板 ``` controller代码: public function actionSendtem(){ $res = Yii::$app->mailer->compose('welcome', [ 'html' => 'html', //key固定,value是模版文件名,布局文件在mail\layouts目录下面 'title' => '邮件' ,//传递的参数 ]) ->setTo('XXX@qq.com') ->setSubject('Message subject') ->send(); var_dump($res); //true } welcome.php文件: <h2><?= $title ?></h2> ``` 五、发送文件和图片 ``` public function actionFile(){ $message = Yii::$app->mailer->compose(); $message->attach('img/2.png'); //可访问的图片地址或者文件 $message->attachContent('文件内容', ['fileName' => '1.txt', 'contentType' => 'text/plain']); $message->setTo('XXX@qq.com'); $message->setSubject('Message subject'); $res = $message->send(); if ($res){ echo 'success'; } } ``` 六、内容镶嵌图片 ``` //controller Yii::$app->mailer->compose('welcome', [ 'title' => '嵌入图片', 'imageFileName' => '图片可访问地址' ]) ->setTo('***@163.com') ->setSubject('Message subject') ->send(); //welcome.php <img src="<?= $message->embed($imageFileName); ?>"> //或者这里直接写图片的可访问地址,不用embed方法。 ```