如果看着文字眼乏就去看看视频吧->

如何注册腾讯企业邮箱

https://www.bilibili.com/video/av14351397/

如何在项目中使用

https://www.bilibili.com/video/av14351961/

下面是我自己在采坑的过程中遇到的问题

首先我们下载PHPMailer的,下载地址:https://github.com/PHPMailer/PHPMailer

将文件部入到我们的TP框架中,放到extend/org中。

第一步我们应该准备发送邮箱的账号,我这里用的是腾讯企业邮箱

没有的可以直接注册一个:https://exmail.qq.com

将类文件PHPMailer.php第1760行的方法里的if判断中添加include_once 'SMTP.php';

if (!is_object($this->smtp)) {
include_once 'SMTP.php';
$this->smtp=new SMTP();
}

在控制器里面代码

<?php
namespace app\api\controller;
use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use think\Controller;
use think\Loader;
class Mailsms  extends Controller
{//发送商,,,QQ企业邮箱地址都是smtp.exmail.qq.comconst HOST='smtp.exmail.qq.com';//发件人邮箱....企业邮箱中一个成员的账号const USERNAME='youname@youyuming.top';//发件箱授权码。。。。。。这里是成员账号的登录密码const PASSWORD='passworld';//发送模板const TEMPLATE='您的验证码是{code},请在10分钟内填写。';//是否debug 测试环境使用const DEBUG=true;//实例protected $mail;public function _initialize(){Loader::import("org.PHPMailer.src.Exception",EXTEND_PATH,".php");Loader::import("org.PHPMailer.src.PHPMailer",EXTEND_PATH,".php");Loader::import("org.PHPMailer.src.SMTP",EXTEND_PATH,".php");$this->mail=new PHPMailer();}/*** target 发送给谁 收件人的邮箱* subject 主题* code 验证码apiMailsms/index*/public function sendMail($target,$subject,$code){$content = str_replace('{code}',$code,self::TEMPLATE);try{$this->mail->SMTPDebug=self::DEBUG;$this->mail->isSMTP();$this->mail->Host=self::HOST;//服务器$this->mail->SMTPAuth=true;//是否开启SMTP认证$this->mail->Username=self::USERNAME;//发件人邮箱$this->mail->Password=self::PASSWORD;//发件箱授权码// $this->mail->SMTPSecure='tls';//启用TLS加密,' ssl '也接受//  $this->mail->Port='25';//端口      //注意使用阿里域名的需要使用ssl加密,465端口,$this->mail->SMTPSecure='ssl';//启用TLS加密,' ssl '也接受$this->mail->Port='465';//端口$this->mail->CharSet='UTF-8';//设置邮件内容编码$this->mail->setFrom(self::USERNAME); //发件人//$this->mail->addAttachment('/var/tmp/file.tar.gz');//附件//$this->mail->addAttachment('/tmp/image.jpg', 'new.jpg');//附件重命名$this->mail->addAddress($target);//发送给谁$this->mail->isHTML(true);$this->mail->Subject=$subject;$this->mail->Body=$content;//$this->mail->AltBody ='This is the body in plain text for non-HTML mail clients';if($this->mail->send()){
echo "发送成功!";}else{echo "发送失败!";}}catch(Exception $e) {echo "异常抛出";}}
public function index(){$this->sendMail('收件人的邮箱','邮箱标题',自定义数据);
}
}

可以看出连接超时导致邮件发送失败,初步怀疑测试环境宿主机无法访问外网,进入bash后 curl http://baidu.com可正常响应,排除此种情况,然后同样方法到部署的具体容器环境(docker)控制台 curl http://baidu.com 同样可以正常响应,判断应用环境没有问题,则判断是否腾讯邮件服务器问题,到宿主机访问:Telnet smtp.exmail.qq.com 25,访问超时。后咨询PE答复阿里云ECS为管控垃圾邮件,屏蔽了25端口号的服务,所以导致该访问超时,尝试使用ssl方式的465端口,修改代码如下之后成功发送邮件:

邮件直接进入垃圾箱原因:
1. 以触发式的过滤算法鉴别垃圾邮件
这种垃圾邮件过滤器通常安装在电子邮件客户端软件或者邮件服务器上,其过滤垃圾邮件原理是过滤软件检查邮件发送人、标题、正文内容、邮件中出现的链接和域名,甚至电话号码。当发现带明显垃圾邮件的典型特征,则给予这封邮件一定的垃圾邮件特征分数。当分数达到一定数值,邮件将被标记为垃圾邮件,直接过滤到邮件垃圾箱。
比如,邮件标题中出现¥、$符号,则可以给予2分垃圾邮件分数;邮件内容中出现“免费”、“发票”、“促销”等典型垃圾邮件词汇,给予1分;邮件中如包含已经被确认为经常发送垃圾邮件的域名,再加1分;甚至邮件内容中出现被确认与垃圾邮件相关的电话号码,也给个分数。当这些垃圾分数相加达到某一个数值时,比如达到10分,这封邮件将被标识为垃圾邮件,将会被ISP商丢进垃圾邮箱
2. 以黑名单为基础
有些创建和维护邮件黑名单的组织,专门接受用户的垃圾邮件投诉,如果确认是垃圾邮件,黑名单管理者将把发送垃圾邮件的服务器和用户IP地址放入黑名单。比较知名的垃圾邮件黑名单通常都与其他ISP商共享黑名单数据库。一旦某个IP地址被列入黑名单,世界上很多ISP都将拒收来自这个IP地址的所有邮件。
有时候用户投诉,其实收到的邮件并不是垃圾邮件,而是用户忘记了曾经注册过相关电子杂志。如果你的IP地址被错误的投诉而列入黑名单,Jeasin.com建议您,唯一的办法就是联系黑名单维护组织,说明情况,提出证据,要求把你的IP地址从黑名单中删除,此过程比较复杂困难。
3. 邮件防火墙
很多邮件服务器运行在邮件防火墙之后,这些防火墙会共同地使用各种过滤器和黑名单,再加上自行研究的一些算法,来鉴别和剔除垃圾邮件。这些防火墙的算法更复杂,并且不与他人分享细节,对正常的邮件送达也可能有致命的影响,如部分邮件服务器要求有人工添加确认功能,针对大部分陌生地址邮件,华思邮件告诉各位我们应将采用拒收的策略。

转载于:https://www.cnblogs.com/ql-smile/p/10938680.html

php使用邮箱发送验证码相关推荐

  1. Spring Boot 整合163或者qq邮箱发送验证码

    前记 最近做的项目中注册功能要用到验证码,本来想用阿里云的短信服务,但是有点小贵,就另辟捷径,选择了用邮箱来发送验证码.记录一下整合过程,也希望能帮助一些有需要的人. 正文 1.Spring Boot ...

  2. java邮箱发送验证码_java 邮箱发送验证码

    packagecom.*******.util.email;importorg.apache.commons.mail.EmailException;importorg.apache.commons. ...

  3. golang邮箱发送验证码

    常用邮箱: QQ 邮箱 POP3 服务器地址:qq.com(端口:995) SMTP 服务器地址:smtp.qq.com(端口:465/587) 163 邮箱: POP3 服务器地址:pop.163. ...

  4. 邮箱发送验证码工具类

    1.邮箱支持引入到pom <dependency><groupId>org.springframework.boot</groupId><artifactId ...

  5. Python使用QQ邮箱发送验证码

    向指定对象发送验证码 在做一些个人的demo或者实战项目等,涉及登录验证的,可以通过该方式实现一个简易的邮箱发送验证码. 该方法使用了Python的smtplib第三方库,需要保证发送者的QQ邮箱开通 ...

  6. SpringBoot实现邮箱发送验证码(QQ,163等同理)

    SpringBoot实现邮箱发送验证码 准备工作(依赖和yml文件的配置) 邮件的发送代码 补充 准备工作(依赖和yml文件的配置) 我们要远程操纵邮箱就需要获得每个邮箱的密钥: 1.先进入你的qq邮 ...

  7. 实战总结:邮箱发送验证码

    java邮箱发送验证码 目前项目中需要同时支持短信和邮箱验证,短信用的是腾讯云就不多说了,在此分享一下邮箱验证码发送. 首先,作为发送邮箱,需要开启POP3/SMTP/IMAP,登录邮箱–设置–账户– ...

  8. 邮箱发送验证码和短信发送验证码的学习笔记

    邮箱发送验证码 //邮箱验证码public static boolean sendEmail(String emailaddress,String code) {try {HtmlEmail emai ...

  9. SpringBoot通过qq邮箱发送验证码

    SpringBoot通过qq邮箱发送验证码 1.开启qq授权码 2.编写配置文件 spring:#邮箱验证mail:##163 smtp.163.com(反垃圾系统发送不了了)##qq smtp.qq ...

  10. Java 实现邮箱发送验证码——QQ邮箱为例

    JAVA实现使用QQ邮箱发送验证码功能 QQ邮箱设置 第一步 ,打开QQ邮箱(地址:https://mail.qq.com/): 第二步 ,登录后点击设置 第三步,点击账户,下拉找到POP3/IMAP ...

最新文章

  1. Yann LeCun:未来几十年AI研究的最大挑战是「预测世界模型」
  2. 一图读懂《北京市数据中心统筹发展实施方案(2021-2023年)》
  3. 《Spring 3.0就这么简单》——1.6 展现层
  4. Oracle中过程/函数返回结果集
  5. scanner 获取控制台信息_Java使用Scanner类进行控制台输入实现方法
  6. 【STM32】HAL库 STM32CubeMX教程五----看门狗(独立看门狗,窗口看门狗)
  7. AWS向中国有限预览客户推出多级别AWS支持服务
  8. 解决matplotlib中文显示问题
  9. Python帮助文件下载使用
  10. 直方图均衡化及算法步骤
  11. 列联表分析-独立性检验
  12. ubuntu / linux 禁止鼠标中键的粘贴功能!
  13. Ribbon饥饿加载
  14. SQL Server数据误删恢复
  15. 想自学软件测试?这本《软件测试》,入门必看
  16. Android支付接入:Google In-app-Billing
  17. 《互联网金融投资理财一册通》一一1.1 互联网金融
  18. jcg q8 固件_JCG读者的免费团队管理工具(Giveaway)
  19. 求数组中的最大值和次大值
  20. autorun.vbs病毒专杀

热门文章

  1. HTML5新增的属性(八)
  2. c# 两个list比较_C# for Grasshopper Day 22 学习笔记
  3. Mybatis Plus 连表操作及分页
  4. 网购组装电脑整机为什么便宜?
  5. 借条和欠条的区别在哪儿?
  6. 你身边有创业失败导致负债累累的案例吗
  7. 直播将是所有企业必须做的
  8. 本田和丰田,你选那个?
  9. Flask前后端分离跨域问题解决方案
  10. sql truncate_如何在SQL Delete和SQL Truncate语句后使用数据库备份恢复数据