yii2-swiftmailer入门

1. 安装

  • 用yii 2.0框架,默认会有这个扩展
  • composer require --prefer-dist yiisoft/yii2-swiftmailer
  • 修改composer.json,require加入: "yiisoft/yii2-swiftmailer": "*",

2.配置

在component中加入(我用的是163的smtp服务):

'mailer' => [ 
            'class' => 'yiiswiftmailerMailer', 
            'viewPath' => '@common/mail', 
            'useFileTransport' => false, 
            'transport' => [ 
                'class' => 'Swift_SmtpTransport', 
                'host' => 'smtp.163.com', 
                'username' => '***@163.com', 
                'password' => '******', 
                'port' => '25', 
                'encryption' => 'tls', 
            ], 
            'messageConfig'=>[ 
                'charset'=>'UTF-8', 
                'from'=>['***@163.com'=>'system'] 
            ], 
        ],

3.简单使用

class Mailer
{
    private static $instance;

    private function __construct()
    {
    }

    // 不可以被克隆
    final public function __clone()
    {
        throw new Exception("RequestContext CANNOT clone! use 'instance' method");
    }

    public static function instance(){
        if (!isset(self::$instance)) {
            self::$instance = new Mailer();
        }

        return self::$instance;
    }
    
    /**
     * 发送邮件
     * 
     * @param string $from      发送邮箱
     * @param string $to        收件邮箱
     * @param string $subject   主题
     * @param string $body      邮件内容,默认使用html
     * 
     * @return bool
     */
    public function sendEmail(string $from, string $to, string $subject, string $body): bool
    {
        if( empty($from) || empty($to) ) {
            return false;
        }

        $mailer   = Yii::$app->mailer->compose();
        $mailer->setFrom($from);
        $mailer->setTo($to);
        $mailer->setSubject($subject);
        $mailer->setHtmlBody($body);
        $status     = $mailer->send();

        return $status;
    }
}

$mailer         = Mailer::instance();
$status         = $mailer->sendEmail($fromMailbox, $toMailbox, $emailSubject, $emailOneBody);

4.其他

  • 可以通过sendMultiple() 方法批量发送邮件。
  • 可以使用邮件模板
  • 支持发送附加

参考资料

yii2发送邮件教程
github开源代码



原文地址:https://www.cnblogs.com/gelu/p/a42998b7cb333f00d8003dbb287c0a5e.html