PHPMailer实现后台发送QQ邮件

引言

PHPMailer是PHP的全功能电子邮件创建和传输类包,可以支持HTML格式的邮件内容,并且可以允许在没有本地邮件服务器的Windows平台上发送电子邮件。具体的详细特点介绍可以看GitHub中的说明文档

说明

最近在项目IT管理课上的项目中遇到了一个用户通过电子邮件修改密码的需求,想着用PHPMailer来实现,这个类包功能强大,很方便,这里我参照Github中的实例写了一个测试用的程序,实现了给指定邮箱发送HTML格式的email,并在其中<a>标签中放置自己本机测试项目的地址,通过邮件跳到项目的相关页面进行操作

前提工作

首先,需要去QQ邮箱开启IMAP/SMTP服务,这个是免费的。但是不知道是什么原因,可能不是会员所以还是有一定区别?反正写好的测试代码不稳定,有时候可以连接到SMTP服务器,有时候就连接不到。不过没关系,如果只是课上的大作业之类的,多try几次老师应该也是允许的

如何开启IMAP/SMTP服务?

1、登陆QQ邮箱,天头地方设置->账户->POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务,点击开启。提醒一点,开启之前还是耐心看看QQ邮箱在链接地址给出的帮助文档,很有用;另外,保存好授权码,这个在帮助文档中有,仔细看看
在这里插入图片描述
2、去GitHub中下载PHPMailer类包,我建议下载5.2-stable的稳定版
3、放到你的项目中去,我是用的ThinkPHP框架,我放到了vendor中去
4、查看你的PHP是否开启SSL和Sockets扩展,没有的话需要修改php.ini文件,去掉ssl和sockets相关的dll前面的注释;若没有相关dll,手动添加extension=php_openssl.dllextension=php_sockets.dll,如果你echo phpinfo();,显示如下,则说明开启成功;另外提醒一下,php.ini修改后生效只需要重启你的服务,无论是nginx还是apache
在这里插入图片描述
在这里插入图片描述

示例代码


<?php
namespace Home\Controller;
use Think\Controller;
class MailerController extends Controller{
 public function sentMailerForResetPwd(){
  vendor('PHPMailer.PHPMailerAutoload');
  $mail = new \PHPMailer();
  $mail->SMTPDebug = 2;
  $mail->isSMTP(); //设置mailer使用SMTP协议
  $mail->Host = "smtp.qq.com"; //设置接受邮件的SMTP服务器地址
  $mail->SMTPAuth = true; //开启SMTP认证
  $mail->Username = "[email protected]";   // SMTP的用户名
  $mail->Password = "***********";   //QQ邮箱的SMTP授权码
  $mail->SMTPSecure = "ssl";    //设置开启ssl认证
  $mail->Port = "465"; //端口号465或者587

  $mail->setFrom('[email protected]','lvbingxu');//设置发件人
  $mail->addAddress('[email protected]');
  // $mail->addAttachment('');//添加附件
  // $mail->addReplyTo('[email protected]','info');//增加回复标签
  // $mail->addCC(); //增加一个抄送
  // $mail->addBCC(); //增加一个密送
  $mail->isHTML(true);

  $mail->Subject = "Here is the test PHPmailer";
  $mail->Body = "<!DOCTYPE html>
  <html>
  <head>
   <title>test PHPMailer</title>
  </head>
  <body>
   <h1>PHPMailer Test</h1><hr>
   <a href='urlxxxxx'>link test</a>
  </body>
  </html>";
  if(!$mail->send()){
   echo "Message could not be sent";
   echo "Mailer Error : ".$mail->ErrorInfo;
  }else{
   echo "Message has been sent";
  }
   }
}
?>

其中一些涉及隐私的地方,我都修改为xxx,改为自己的认证就好了

效果

点击邮件中的link test,跳转到了本地项目的初始页
在这里插入图片描述

在这里插入图片描述

友情连接

1、使用PHPMailer实现PHP发邮件功能
2、phpmailer 参数使用说明
3、GitHub PHPMailer5.2-stable

发布了65 篇原创文章 · 获赞 58 · 访问量 10万+

猜你喜欢

转载自blog.csdn.net/AngelLover2017/article/details/83245341
今日推荐