目录

PHPMailer6.0.7如何在类中被调用

在写发送邮件时发现移植过来的PHPMailer是旧版的(是没有namespace)的,在后面的版本官方才更新过来,于是我在github下载到最新的版本准备写一个发送邮件

第一步

当然是下载 PHPMailer 地址:https://github.com/PHPMailer/PHPMailer

第二步

将文件引入项目中,只保留 src 目录,其余的不用留

第三步

新建一个文件,文件名为 sendMail.php ,写如下代码进行配置

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
<?php
namespace dncTool;

use PHPMailerPHPMailerPHPMailer;
use PHPMailerPHPMailerException;

//引入项目

$dir = dirname(__FILE__) . '/PHPMailer';
require ($dir . '/src/Exception.php');
require ($dir . '/src/PHPMailer.php');
require ($dir . '/src/SMTP.php');

class sendMail
{
    public static $Host = 'smtp.163.com'; //smtp服务器
    private static $From = '这里写邮件地址'; //发送者的邮件地址
    private static $FromName = '签到助手'; //发送邮件的用户昵称
    private static $Username = '这里写邮件地址'; //登录到邮箱的用户名
    private static $Password = '授权码'; //第三方登录的授权码,在邮箱里面设置

    /**
     * 发送
     * @param $sendMail
     * @param $mailTitle
     * @param $content
     * @return bool
     */
    public function send($sendMail,$mailTitle,$content)
    {
        //实例化PHPMail类
        $mail = new PHPMailer(true);
        try {
            //Server settings
            $mail->SMTPDebug = 0; // 关闭Dubug模式
            $mail->isSMTP(); // 使用SMTP发送邮件
            $mail->Host = self::$Host; //SMTP邮件服务器地址(腾讯企业邮为例)
            $mail->SMTPAuth = true; //发信认证
            $mail->Username = self::$Username; // SMTP 发件人邮箱
            $mail->Password = self::$Password; // SMTP 发件人邮箱密码
            $mail->SMTPSecure = 'ssl'; //ssl协议
            $mail->Port = 465; //ssl端口号

            //发件人
            $mail->setFrom(self::$From, self::$FromName); //发件人邮箱(同 $mail->Username项设置)、发件人名称

            //收件人。多收件人可设置多个addAddress
            $mail->addAddress($sendMail, ''); //收件人邮箱地址,收件人姓名(选填)
            //$mail->addAddress('ellen@example.com'); // 收件人邮箱地址

            //邮件内容
            $mail->isHTML(true); //发送html格式邮件
            $mail->Subject = $mailTitle; //邮件标题
            $mail->Body    = $content; //邮件内容
            $mail->AltBody = '邮件摘要'; //目测没什么用,可去掉

            //判断是否发送成功
            if ($mail->send()) {
                return true;
            } else {
                return false;
            }
        } catch (Exception $e) {
            return $mail->ErrorInfo;
        }
    }
}

第四步

在另一个地方实例化这个类就行,然后就可以进行参数传递,代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
$mailSend = new dncToolsendMail();

//设置要发送的邮箱
$sendMail=$email;

//邮件标题
$mailTitle = "您收到签到助手的一条邮件";

//$content为邮件内容
$newPwd = $this->makeCardPassword();
$content="<div><b>您的新密码为:" . $newPwd . ",请尽快登陆并修改密码</b></div>";

//执行发信
$sendRes = $mailSend->send($sendMail,$mailTitle,$content);
if ($sendRes == false) {
	exit(jsonCode('error','服务错误,请重新尝试'));
} else {
	exit(jsonCode('ok','已将重置后的密码发送到您的邮箱中!'));
}

然后直接调用第四步方法就可以成功发信

https://pic.yqqy.top/blog/20200111/8TGarEu0hX9E.png?imageMogr2/format/webp/interlace/1
收到邮件

https://pic.yqqy.top/blog/20200111/024PtSRickMk.png?imageMogr2/format/webp/interlace/1
发送邮件