Yii2 之邮件发送

来源:互联网 发布:js 高精度计算 编辑:程序博客网 时间:2024/05/20 22:37

1 如果没有安装

php composer.phar require --prefer-dist yiisoft/yii2-swiftmailer

2 在配置文件main-local.php components=>[]里面配置

'mailer' => [                 'class' => 'yii\swiftmailer\Mailer',                 'viewPath' => '@common/mail',                 'useFileTransport' => false, //这句必须要有,否则不会发送                 'transport' => [                      'class' => 'Swift_SmtpTransport',                      'host' => 'smtp.163.com',                      'username' => 'ahcj_11@163.com',                      'password' => '密码****',                      'port' => '25',                      'encryption' => 'tls',                  ],                 'messageConfig'=>[                         'charset'=>'UTF-8',                         'from'=>['ahcj_11@163.com'=>'admin']                     ],             ],

3 新建 测试 控制器

<?phpnamespace frontend\controllers;use Yii;use yii\web\Controller;class TestController extends Controller{    public function actionSend()    {          $mail = Yii::$app->mailer->compose();          $mail->setTo('ahcj_11@163.com');          $mail->setSubject('邮件的标题');          $mail->setHtmlBody('邮件内容,这里可以使用 HTML 代码');           echo $mail->send() ? "success":"failse";    }}

在浏览器访问控制器
这里写图片描述

4 使用邮件模板 resetPasword.php
模板代码放在 ‘viewPath’ => ‘@common/mail’, 指定的目录

<?phpuse yii\helpers\Html;/* @var $this yii\web\View *//* @var $user common\models\User */$resetLink = Yii::$app->urlManager->createAbsoluteUrl(['test/reset-password', 'token' => $user->password_reset_token]);?><div class="password-reset">    <p><?= Html::encode($param1) ?>,</p>    <p>这是一个模板测试 -- Follow the link below to reset your password:</p>    <p><?= Html::a(Html::encode($resetLink), $resetLink) ?></p></div>

Action

public function actionSendReset(){        $mail= Yii::$app->mailer->compose('resetPasword',['param1'=>'找回密码']);          $mail->setTo('ahcj_11@163.com');          $mail->setSubject("找回密码");          $mail->setTextBody('找回密码 ');         echo $mail->send() ? "success":"failse";    }

这里写图片描述

5 使用layout,布局文件这里放到 @common/mail/layouts 目录下面。

Yii::$app->mailer->compose('test', [     'html' => 'layout1Html',    'parm1' => '找回密码']) ->setTo('ahcj_11@163.com')    ->setSubject('找回密码')    ->send();

6 发送附件

$message = Yii::$app->mailer->compose(); $message->attach('http://f.hiphotos.baidu.com/image/h%3D200/sign=3d746172a4efce1bf52bcfca9f50f3e8/bba1cd11728b47101489df48c0cec3fdfd03238b.jpg'); $message->attachContent('Attachment content', ['fileName' => '/tmp/test.txt', 'contentType' => 'text/plain']); $message->setTo('ahcj_11@163.com'); $message->setSubject('附件测试'); $message->send();

结果如图
这里写图片描述

7 动态设置 mail 配置信息

$mail = Yii::$app->mailer;$mail->transport = $mail->transport->newInstance($host, $port, 'tls');$mail->transport->setUsername('你的邮箱帐号');$mail->transport->setPassword('你的邮箱密码');

8 批量发送邮件

$users = ['abc@abc', '123@abc']; $messages = []; foreach ($users as $user) {    $messages[] = Yii::$app->mailer->compose()             ->setTo($user)             ->setSubject('测试主题')             ->setHtmlBody('测试内容'); } Yii::$app->mailer->sendMultiple($messages);
0 0
原创粉丝点击