PHPMailer实现后台发送QQ邮件

本文介绍了如何使用PHPMailer在无本地邮件服务器的环境下发送HTML格式邮件。通过具体示例,展示了如何配置SMTP服务,实现邮件内容包含跳转链接,便于用户进行密码重置等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引言

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 = "xxx@qq.com";   // SMTP的用户名
  $mail->Password = "***********";   //QQ邮箱的SMTP授权码
  $mail->SMTPSecure = "ssl";    //设置开启ssl认证
  $mail->Port = "465"; //端口号465或者587

  $mail->setFrom('XXX@qq.com','lvbingxu');//设置发件人
  $mail->addAddress('xxx@qq.com');
  // $mail->addAttachment('');//添加附件
  // $mail->addReplyTo('xxx@xx.xx','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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

angelavor

觉得有收获,给我个三连吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值