zoukankan      html  css  js  c++  java
  • 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开源代码



  • 相关阅读:
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    iOS
    ajax 几种提交方式
  • 原文地址:https://www.cnblogs.com/gelu/p/a42998b7cb333f00d8003dbb287c0a5e.html
Copyright © 2011-2022 走看看