依然灬灰

Thinkphp3.2.3使用PHPMailer

2018/04/17

PHP配置

使用 phpinfo() 函数查看 socket 和 openssl 扩展信息(我使用phpstudy,只需要在控制面板里php扩展打开配置项)。
LINUX下的开启方法略有不同,以后补充。

下载PHPMailer

github上PHPMailer下载地址
在’项目地址\ThinkPHP\Library\Org\’地址下新建PHPMailer文件夹
解压文件,将src文件中的PHPMailer.php和SMTP.php拷贝到新建目录中
将PHPMailer.php修改为PHPMailer.class.php
将SMTP.php修改为SMTP.class.php

修改PHPMailer.class.php代码

PHP代码

//将
namespace PHPMailer\PHPMailer;
//修改为
namespace Org\PHPMailer;

修改SMTP.class.php代码

PHP代码

//将
namespace PHPMailer\PHPMailer;
//修改为
namespace Org\PHPMailer;

function.php

在’项目地址\Application\Common\Common\function.php’新增以下代码

<?php
/**
 * 发送邮件
 * @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');
    $email_smtp_secure=C('EMAIL_SMTP_SECURE');
    $email_port=C('EMAIL_PORT');
    if(empty($email_smtp) || empty($email_username) || empty($email_password) || empty($email_from_name)){
        return array("error"=>1,"message"=>'邮箱配置不完整');
    }
    $phpmailer = new \Org\PHPMailer\PHPMailer();
    // 设置PHPMailer使用SMTP服务器发送Email
    $phpmailer->IsSMTP();
    // 设置设置smtp_secure
    $phpmailer->SMTPSecure=$email_smtp_secure;
    // 设置port
    $phpmailer->Port=$email_port;
    // 设置为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);
    }
}
?>

配置

在’项目/Application/Common/Conf/config.php’添加配置

/*
 * PHPMailer配置型
 * */
'EMAIL_FROM_NAME'        => '',   // 发件人(随便写)
'EMAIL_SMTP'             => '',   // smtp例如smtp.163.com或者smtp.qq.com
'EMAIL_USERNAME'         => '',   // 账号例如aaa.163.com或者11111.qq.com
'EMAIL_PASSWORD'         => '',   // 密码  注意: 163和QQ邮箱是授权码;不是登录的密码
'EMAIL_SMTP_SECURE'      => '',   // 链接方式 如果使用QQ邮箱;需要把此项改为  ssl
'EMAIL_PORT'             => '25', // 端口 如果使用QQ邮箱;需要把此项改为  465(阿里云默认封掉25端口)建议使用465配合上面ssl

参考文章

thinkphp整合系列之phpmailer批量发送邮件
使用PHPMAILER实现PHP发邮件功能