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

如何注册腾讯企业邮箱

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.com
const 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. 邮件防火墙

很多邮件服务器运行在邮件防火墙之后,这些防火墙会共同地使用各种过滤器和黑名单,再加上自行研究的一些算法,来鉴别和剔除垃圾邮件。这些防火墙的算法更复杂,并且不与他人分享细节,对正常的邮件送达也可能有致命的影响,如部分邮件服务器要求有人工添加确认功能,针对大部分陌生地址邮件,华思邮件告诉各位我们应将采用拒收的策略。

php使用邮箱发送验证码的更多相关文章

  1. JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架)

    JAVA 实现 QQ 邮箱发送验证码功能(不局限于框架) 本来想实现 QQ 登录,有域名一直没用过,还得备案,好麻烦,只能过几天再更新啦. 先把实现的发送邮箱验证码更能更新了. 老规矩,更多内容在注释 ...

  2. JavaWEB实现qq邮箱发送验证码——qq1692700664

    // 随机验证码public String achieveCode() { String[] beforeShuffle = new String[] { "2", "3 ...

  3. C#邮箱发送验证码

    public static void SendTo(string mailAddress, string subject, string body)        { //mailAddress 所要 ...

  4. PHP(ThinkPHP5.0) + PHPMailer 进行邮箱发送验证码

    GitHub下载最新版第三方类库PHPMailer: 第一步: 打开网址https://github.com/PHPMailer/PHPMailer/ 下载PHPMailer,PHPMailer 需要 ...

  5. Java实现邮箱发送验证码

    第一步,导入JAR包,JAR包下载地址[http://pan.baidu.com/s/1kVRvGyF] 正式代码: 首先书写一个工具类: MailUtil import javax.mail.*; ...

  6. .NET发送邮箱(验证码)

    先看下前端: 写代码前先设置: 一:登录QQ邮箱,点击设置 二: 三: //下面开始敲代码... //两个命名空间 //using System.Net; //using System.Net.Mai ...

  7. C#使用SMTP协议发送验证码到QQ邮箱

    C#使用SMTP协议发送验证码到QQ邮箱 在程序设计中,发送验证码是常见的一个功能,用户在注册账号时或忘记密码后,通常需要发送验证码到手机短信或邮箱来验证身份,此篇博客介绍在C#中如何使用SMTP协议 ...

  8. java实现邮箱发送信息--验证码的发送(163邮箱)

    1.maven环境 <!-- 发送邮件 --> <dependency> <groupId>javax.mail</groupId> <artif ...

  9. 用java实现邮件发送验证码

    java实现邮件发送验证码 建议不要用qq邮箱,我使用qq邮箱直接一直给我报530错误,我一直认为我代码写的有错误或者POP3/SMTP服务没弄好.所以建议注册个别的邮箱,我就申请了个网易163邮箱瞬 ...

随机推荐

  1. 1004. 成绩排名 (20) (快速排序qsort函数的使用问题)

    读入n名学生的姓名.学号.成绩,分别输出成绩最高和成绩最低学生的姓名和学号. 输入格式:每个测试输入包含1个测试用例,格式为 第1行:正整数n 第2行:第1个学生的姓名 学号 成绩 第3行:第2个学生 ...

  2. 【树状数组+离线查询】HDU 3333 Turing Tree

    https://www.bnuoj.com/v3/contest_show.php?cid=9149#problem/H [题意] 给定一个数组,查询任意区间内不同数字之和. (n<=30000 ...

  3. hdu 4325

    #include<stdio.h>//数据弱线段树延迟更新水过 #define N 100100 struct node { int x,y,yanchi,num; }a[N*4]; vo ...

  4. html5视频播放器 二 (功能实现及播放优化)

    样式改写css,其中的一些按钮是在“阿里妈妈”上找的字体图标,就不向上传了. /* *CoolPlay视频播放器 * 2016年8月1日 * 627314658@qq.com * */ @font-f ...

  5. Eclipse-Java代码规范和质量检查插件-阿里编码规约

    此工具配套阿里巴巴Java开发手册:http://www.cnblogs.com/EasonJim/p/6436387.html Eclipse安装和使用方法:https://github.com/a ...

  6. SystemTap 学习笔记 - 安装篇

    https://segmentfault.com/a/1190000000671438 在安装前,需要知道下自己的系统环境,我的环境如下: uname -r 2.6.18-308.el5 Linux ...

  7. omnidazzle是mac的画笔工具

    先使用命令 brew cask install omnidazzle 试试,不行参考下面: http://macappstore.org/omnidazzle/

  8. Android之AssetManager使用

    1. 获取AssetManager AssetManager assetManager = context.getAssets(); 2. 列出assets文件夹下全部文件 String[] file ...

  9. Django学习系列之模板

    什么是django模板 模板是一个文本,用于分离文档的表现形式和内容,模板定义了占位符以及各种用于规范文档该如何显示的各部分基本逻辑(模板标签) 模板通常用于产生HTML 如何使用模板 创建一个Tem ...

  10. Office 佳能MP259打印EXCEL线条歪曲,字迹模糊怎么办

    这大概是墨盒的缘故,判断方法很简单,随便找一个文档,点击打印,属性   在维护选项卡中把清洗和打印头对齐做一遍(一般字迹模糊可以通过清洗解决,线条歪曲可以通过打印头对齐解决),如果你打印的结果是纸张边 ...