• Yii2之发送电子邮件


    官方文档:http://www.yiiframework.com/doc-2.0/guide-tutorial-mailing.html

    使用Yii2框架的时候,有时候需要发送电子邮件,Yiii2提供了swiftMailer扩展来实现;

    1、swiftMailer

    Swift是一个完全采用面向对象编码用于发送e-mail的PHP函数库。Swift不依赖于PHP的mail()函数,因为用它发送多封邮件时会占用较高的服务器资源。Swift通过直接连到SMTP服务器或MTA能够更快,更高效地发送邮件。

    2、安装:

    https://github.com/yiisoft/yii2-swiftmailer

    这里有具体的安装方法以及使用方法:

    a、配置:

    return [ 
        //.... 
        'components' => [ 
            'mailer' => [ 
                'class' => 'yiiswiftmailerMailer', 
                'useFileTransport' => false, 
                'transport' => [ 
                    'class' => 'Swift_SmtpTransport', 
                    'host' => 'smtp.163.com', 
                    'username' => '***@163.com', 
                    'password' => '******',    //这里需要注意,一些邮箱如果在第三方邮箱登录以下等服务POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV,会要求设置登录授权码,登录的时候,密码是输的这个授权码,这里填写的password也相应的是这个授权码
                    'port' => '25', 
                    'encryption' => 'tls', 
                ], 
                'messageConfig'=>[ 
                    'charset'=>'UTF-8', 
                    'from'=>['***@163.com'=>'**客服'] 
                ], 
            ], 
        ], 
    ];

    3、使用:

    $mail= Yii::$app->mailer->compose();
    $mail->setTo('***@163.com'); //要发送的邮箱 
    $mail->setSubject("邮件主题"); //邮件主题 
    $mail->setTextBody('纯文本内容'); //发布纯文字文本 
    $mail->setHtmlBody("消息内容"); //发送的消息内容 
    $res = $mail->send();

    注意:批量发送的时候,只需要在setTo防范重传入邮箱数组即可,setTo([‘mail1@mail.com’,‘mail1@mail.com’])

    4、自定义邮件模板:

    我们在配置的时候会做一些配置,其中有一项为

    'viewPath' => '@common/mail',

    因此我们可以在该目录下创建新的模版文件template.php,内容自己随便写

    然后在定义的时候:

    Yii::$app->mailer->compose('template',['params'=>'参数1'])

    即参数传入模板文件的名称。当然也支持传入参数,即为第二个参数

    5、自定义layout

    为邮件定制layout,,假如layout放在commonlayoutsmail下,文件为layout.php:

    Yii::$app->mailer->compose('template', [ 
        'html' => 'layout', //key固定,value是模版文件名 
        'params' => '参数1' 
    ]) ->setTo('**@163.com') 
       ->setSubject(*****主题') 
       ->send();

    6、发送带附件的邮件:发送邮件并以附件的形式带上一张图片和一个word文档

    $message = Yii::$app->mailer->compose(); 
    $message->attach('图片可访问地址'); 
    $message->attachContent('Attachment content', ['fileName' => 'test.word', 'contentType' => 'text/plain']); 
    $message->setTo('***@163.com'); 
    $message->setSubject('***主题'); 
    $message->send();

    注意:想把图片放在邮件内容,而不是附件发送,可以通过模板文件并传入参数的方法实现,但是部分邮箱还是会将图片摘出来,以附件的形式发送

  • 相关阅读:
    datagridview 保存为excel输出
    将excel导入到datatable
    Json 转换为c#数组
    css 没有图片则隐藏或者显示默认图片
    模拟Get请求
    根据多个字符分隔字符串
    DbHelperSQL
    数据库相关
    json对象
    ajax滚动条懒加载
  • 原文地址:https://www.cnblogs.com/Steven-shi/p/8524413.html
Copyright © 2020-2023  润新知