zoukankan      html  css  js  c++  java
  • thinkphp集成系列之phpmailer批量发送邮件

    前段时间写了一篇博客:thinkphp集成系列之短信验证码、订单通知

    说了这是一个短信通知泛滥的年代;大部分网站的邮箱注册都已经被短信注册所取代;

    但是邮件和短信相比在一些场景依然有着重要的意义和优势;

    1:零成本;发邮件没有费用;

    2:内容丰富且量大;邮件可以长篇大论;图文并茂;

    3:增加访问量;用户很容易通过邮件中的链接访问网站;

    好了;下面来来为thinkphp集成邮件系统;

    示例项目:http://git.oschina.net/shuaibai123/thinkphp-bjyadmin

    一:引入phpmail

    从示例项目中复制两个文件到自己的项目;

    /ThinkPHP/Library/Org/Nx/class.phpmailer.php ;
    /ThinkPHP/Library/Org/Nx/class.smtp.php ;

    不要从官网上下载;因为下载的phpmail直接引入thinkphp是有一些坑会报错的;

    具体报什么错;年代久远;当年整合的时候没有记录;

    二:设置配置项

    /Application/Common/Conf/config.php

        'EMAIL_FROM_NAME'        => '', // 发件人
        'EMAIL_SMTP'             => '', // SMTP服务器
        'EMAIL_USERNAME'         => '', // 账号
        'EMAIL_PASSWORD'         => '', // 密码

    如果使用163邮箱;此处有一个坑;首先是要开启smtp;

    白俊遥博客

    白俊遥博客

    开启过程中是要设置一个授权密码;开启完成;又一个坑也就同步挖好了;

    配置项中的EMAIL_PASSWORD 指的不是163邮箱的登录密码;而是授权密码;

    否则SMTP connect() failed;

    三:发送邮件

    /**
     * 发送邮件
     * @param  string $address 需要发送的邮箱地址 发送给多个地址需要写成数组形式
     * @param  string $subject 标题
     * @param  string $content 内容
     * @return boolean       是否成功
     */
    function send_email($address,$subject,$content){
        $email_smtp=C('EMAIL_SMTP');
        $email_username=C('EMAIL_USERNAME');
        $email_password=C('EMAIL_PASSWORD');
        $email_from_name=C('EMAIL_FROM_NAME');
        if(empty($email_smtp) || empty($email_username) || empty($email_password) || empty($email_from_name)){
            return array("error"=>1,"message"=>'邮箱配置不完整');
        }
        require './ThinkPHP/Library/Org/Nx/class.phpmailer.php';
        require './ThinkPHP/Library/Org/Nx/class.smtp.php';
        $phpmailer=new Phpmailer();
        // 设置PHPMailer使用SMTP服务器发送Email
        $phpmailer->IsSMTP();
        // 设置为html格式
        $phpmailer->IsHTML(true);
        // 设置邮件的字符编码'
        $phpmailer->CharSet='UTF-8';
        // 设置SMTP服务器。
        $phpmailer->Host=$email_smtp;
        // 设置为"需要验证"
        $phpmailer->SMTPAuth=true;
        // 设置用户名
        $phpmailer->Username=$email_username;
        // 设置密码
        $phpmailer->Password=$email_password;
        // 设置邮件头的From字段。
        $phpmailer->From=$email_username;
        // 设置发件人名字
        $phpmailer->FromName=$email_from_name;
        // 添加收件人地址,可以多次使用来添加多个收件人
        if(is_array($address)){
            foreach($address as $addressv){
                $phpmailer->AddAddress($addressv);
            }
        }else{
            $phpmailer->AddAddress($address);
        }
        // 设置邮件标题
        $phpmailer->Subject=$subject;
        // 设置邮件正文
        $phpmailer->Body=$content;
        // 发送邮件。
        if(!$phpmailer->Send()) {
            $phpmailererror=$phpmailer->ErrorInfo;
            return array("error"=>1,"message"=>$phpmailererror);
        }else{
            return array("error"=>0);
        }
    }

    发送邮件调用函数;

    send_email('baijunyao@baijunyao','邮件标题','邮件内容');
    // 如果群发邮件 则传入数组即可
    $emails=array('b1@baijunyao.com','b2@baijunyao.com');
    send_email($emails,'邮件标题','邮件内容');

    本文为白俊遥原创文章,转载无需和我联系,但请注明来自白俊遥博客http://baijunyao.com                        

  • 相关阅读:
    [Noip2016]天天爱跑步
    [ioi2008]Island 岛屿
    [Poi2012]Rendezvous
    RCTF2019 next_php
    WinSocket编程笔记(五)
    PTA的Python练习题(二十一)
    WinSocket编程笔记(四)
    PTA的Python练习题(二十)
    WinSocket编程笔记(三)
    WinSocket编程笔记(二)
  • 原文地址:https://www.cnblogs.com/shuaibai123/p/5539358.html
Copyright © 2011-2022 走看看