yii2发邮件

yii2中官方为了解决邮件发送问题,提供了swiftMailer扩展。
我们先来了解下什么是swiftMailer。
Swift是一个完全采用面向对象编码用于发送e-mail的PHP函数库。Swift不依赖于PHP的mail()函数,因为用它发送多封邮件时会占用较高的服务器资源。Swift通过直接连到SMTP服务器或MTA能够更快,更高效地发送邮件。

1、配置

<?php
return [
    'components' => [
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
            'viewPath' => '@common/mail',
            // send all mails to a file by default. You have to set
            // 'useFileTransport' to false and configure a transport
            // for the mailer to send real emails.
            'useFileTransport' => false,
            'transport' => [  
           'class' => 'Swift_SmtpTransport',  
           'host' => 'smtp.126.com',  //每种邮箱的host配置不一样
           'username' => '****@126.com',  
           'password' => '****',  //授权码
           'port' => '25',  
           'encryption' => 'tls',   
                   ],   
           'messageConfig'=>[  
               'charset'=>'UTF-8',  
               'from'=>['****@126.com'=>'Buernnm']  
               ],  
        ],
    ],
];

2、简单使用


$mail= Yii::$app->mailer->compose();
        $mail->setTo('****@126.com'); //要发送给那个人的邮箱
        $mail->setSubject("邮件主题"); //邮件主题
        $mail->setTextBody('测试'); //发布纯文字文本 
        var_dump($mail->send());


3、多邮件发送


        $users = ['@qq.com', '@126.com','@163.com'];
        $messages = [];
        foreach ($users as $user)
        {
            $messages[] = Yii::$app->mailer->compose()
            ->setTo($user)
            ->setSubject('测试主题')
            ->setHtmlBody('测试内容');
        }
        Yii::$app->mailer->sendMultiple($messages);

4、发送带附件的邮件(简单举例发送邮件并以附件形式带上一张图片和一个txt文本)

        $message = Yii::$app->mailer->compose();
        $message->attach('图片的地址');
        $message->attachContent('Content', ['fileName' => 'name.txt', 'contentType' => 'text/plain']);
        $message->setTo('***@126.com'); 收件人的邮箱
        $message->setSubject('CSDN--不知于代码');
        $message->send();

5、测试邮件发送
有小伙伴急躁了,天哪!没道理啊、不应该啊,下面我们来看看怎么进行邮件测试。
我们在common的配置文件添加的mail配置项中,
useFileTransport 为false的时候,我们会发送邮件直接到你的服务器,
useFileTransport为true的时候,邮件真实发送到你的邮箱,但是会以文件的形式保存在默认目录@runtime/mail。该路径可通过配置fileTransportPath进行配置

还有就是发送邮件成功如果收件箱内没有看到邮件,那么就去垃圾箱里去看看,因为你发送的内容可能会被当成垃圾邮件,


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值