准备工作
使用QQ邮箱或者163网易邮箱或者126邮箱,这里以qq邮箱为例来进行介绍。
分为三步:1.如果是本机需要开放端口25,如果是服务器的话需要添加一个465端口;
2.打开邮箱,需要开启邮箱的SMTP服务,开启之后返回一个授权验证码,后面要用
3.下载PHPMailer资源放在TP5框架的vendor目录下。
4.代码编写
一、PHPMailer是什么?
phpMailer 是一个非常强大的php发送邮件类,可以设定发送邮件地址、回复地址、邮件主题、html网页,上传附件,并且使用起来非常方便。
二、使用步骤
1.查看本机是否开放25端口
如果没有启动,可以使用cmd命令行开启,也可以在计算机->管理->服务中找到smtp服务,然后点击启动。
2.打开邮箱启动邮箱的SMTP服务
QQ邮箱->设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,点击开启。
需要注意的是授权码在后续步骤中会用到。
3.下载PHPMailer资源
(1)phpmailer 安装或者下载方式:
从 github 上下载: GitHub - PHPMailer/PHPMailer: The classic email sending library for PHP
(2)使用 composer 安装:
在打开的composer命令行界面输入
composer require phpmailer/phpmailer
(3)也可以通过我的资源链接:
(4)下载完成后可以在TP5框架目录中看到这样一个文件
4.代码编写
(1)创建目录所需文件
主要思想是在主页index.html页面设置一个a链接来进行跳转进入email.html页面,在表单中输入发送人和发送验证内容,最后发送成功时页面提示200,页面失败时发送400;
(2)在index.html页面body中写入
(3)在index.php文件中创建一个类并写入一个函数叫target和emails
namespace app\index\controller; //引入命名空间
use think\Controller; //继承父类
use app\Common;//引入公共类
class Index extends Controller
{
public function target(){ //跳转email.html页面
return $this->fetch('email');
}
public function emails (){
$em = new Common();
$email = input('e_email');
$code = input('e_content');
echo $email;
echo $code;
return $em->send_code_to_email($email, $code);
}
}
(4)在common.php公共配置文件中写入
// 应用公共文件
namespace app;
class Common
{
public function send_code_to_email($email , $code)
{
// echo 'send_code_to_email';
// vendor('PHPMailer.class#PHPMailer');
vendor('PHPMailer.PHPMailerAutoload'); // 引入
$toemail = $email;
$mail = new \PHPMailer(); // 新建
$mail->isSMTP(); // 开启SMTP
$mail->CharSet = 'utf8'; // 设置编码
$mail->Host = 'smtp.qq.com'; // SMTP服务器
$mail->SMTPAuth = true; // smtp需要鉴权 这个必须是true
$mail->Username = 'xxx@qq.com'; // 发信人的账号
$mail->Password = "开启邮箱STMP服务时生成的授权码"; // 密码,非邮箱密码,是SMTP生成的密码
$mail->From = 'xxx@qq.com'; // 发信人的地址
$mail->SMTPSecure = 'ssl'; // 采用ssl协议
$mail->Port = 465; // 端口号
$mail->FromName = "发件人"; // 发件人昵称
$mail->addAddress($toemail); // 收信人地址
$mail->addReplyTo('xxx@qq.com'); //回复的时候回复的邮箱,建议和发信人一样
$mail->Subject = "验证码"; // 邮件主题
$mail->Body = "您的验证码是: " . $code . " 有效期为1分钟,本邮件请勿回复!"; // 邮件内容
if (!$mail->send()) {
return 400;
} else {
return 200;
}
}
}