TP5使用phpmailer发送邮件

Posted 2019-12-16updated 2019-12-17Words 718Reading time 5m

简介

phpMailer 是一个非常强大的php发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、html网页,上传附件,并且使用起来非常方便。

开启STMP服务

QQ邮箱开启STMP服务

所有的主流邮箱都支持 SMTP 协议,但并非所有邮箱都默认开启,您可以在邮箱的设置里面手动开启。

第三方服务在提供了账号和密码之后就可以登录 SMTP 服务器,通过它来控制邮件的中转方式。

进去网页邮箱,点击设置->账户->开启IMAP服务

一顿操作之后,就能看到授权码

SMTP 服务器认证密码,需要妥善保管(PS:密码直接没有空格)。

网易邮箱开启STMP服务

在这里就不多加演示了,跟QQ开启方式差不多,不懂问度娘。

使用composer安装phpmailer

composer require phpmailer/phpmailer

使用PHPmailer

在应用公共文件common.php写个发送邮件的函数(腾讯邮箱的为例),需要注意的是实例化PHPMailer因为如果路径不对会报错(***类名不存在)

代码编写

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
<?php
/**
* Created by PhpStorm.
* User: 加油鸭
* Date: 2019/12/16
* Time: 15:43
*/

/**
* Notes:发送邮件
* @param string $tomail 接收邮件者邮箱
* @param string $name 接收邮件者名称
* @param string $subject 邮件主题
* @param string $body 邮件内容
* @param string $attachment 附件列表
* @return boolean
* @throws phpmailerException
*/
function send_mail($tomail, $name, $subject = '', $body = '', $attachment = null) {
$mail = new PHPMailer\PHPMailer\PHPMailer(); //实例化PHPMailer对象
$mail->CharSet = 'UTF-8'; //设定邮件编码,默认ISO-8859-1,如果发中文此项必须设置,否则乱码
$mail->IsSMTP(); // 设定使用SMTP服务
$mail->SMTPDebug = 0; // SMTP调试功能 0=关闭 1 = 错误和消息 2 = 消息
$mail->SMTPAuth = true; // 启用 SMTP 验证功能
$mail->SMTPSecure = 'ssl'; // 使用安全协议
$mail->Host = "smtp.qq.com"; // SMTP 服务器
$mail->Port = 465; // SMTP服务器的端口号
$mail->Username = "******@qq.com"; // SMTP服务器用户名
$mail->Password = "******"; // SMTP服务器密码,这里是你开启SMTP服务时生成密码
$mail->SetFrom('******@qq.com', $name);
$replyEmail = ''; //留空则为发件人EMAIL
$replyName = ''; //回复名称(留空则为发件人名称)
// $mail->addAttachment('../xy.zip'); // 添加附件
// $mail->addAttachment('../thumb-1.jpg', 'new.jpg'); // 发送附件并且重命名
$mail->AddReplyTo($replyEmail, $replyName);
$mail->Subject = $subject;
$mail->MsgHTML($body);
$mail->AddAddress($tomail, $name);
if (is_array($attachment)) { // 添加附件
foreach ($attachment as $file) {
is_file($file) && $mail->AddAttachment($file);
}
}
return $mail->Send() ? true : $mail->ErrorInfo;
}

新建Email控制器,调用Common.php

php
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
namespace app\index\controller;

use think\Controller;

class Email extends Controller
{

public function send_email()
{
$toemail='******1@qq.com';//收件人邮箱
$name='彼得潘';//接收邮件者名称
$subject='QQ邮件发送测试';//邮件主题
$content='恭喜你,邮件测试成功。';//邮件内容
//调用方法发送邮件
$dd = send_mail($toemail,$name,$subject,$content);
dump($dd);
}
}