写在最前,一定要使用最新的PHPMailer(目前最新的是PHPMailer 6.6.0版本),否则会遇到问题,Troubleshooting · PHPMailer/PHPMailer Wiki · GitHub

一、下载PHPMailer

项目地址:GitHub - PHPMailer/PHPMailer: The classic email sending library for PHP

使用git命令克隆到本地,或者点Code下的Download ZIP直接下载到本地然后解压。

二、开启邮箱SMTP服务

我这里用的是QQ邮箱,其他邮箱同理。设置--账户设置--POP3/IMAP/SMTP/Exchange/CardDAV/CalDAV服务。

这两项最好都开启(我是已经开启的状态), 点击开启的时候会弹出验证,按流程进行验证就行,然后会得到一个授权码,一定要复制保存下来这个授权码,后边会用到。如果是两项都开启的话,保存好IMAP/SMTP服务生成的授权码,最后用这个。

三、PHP扩展支持

在自己的PHP环境路径下创建文件index.php,输入以下代码然后运行。

<?php
phpinfo();
?>

PHPMailer需要PHP有sockets和openssl扩展支持,如果能查到就可以。

四、PHPMailer-master部署

下载下来的PHPMailer-master.zip解压出来,放在PHP环境路径下。

我们主要用到的是src文件夹下的文件,我们至少要用到PHPMailer.php。我们使用SMTP就要用到SMTP.php,我们使用POP就要用到POP3.php(一般不会,我们还是用STMP更多)。我们还用到Exception.php,即使没有使用异常,仍然需要加载Exception该类,因为它在内部使用。

如果没有向用户显示错误,可以跳过language文件夹,并且可以处理纯英语错误。

1.打开composer.json,在require下添加"phpmailer/phpmailer": "^6.5"(我们不使用Composer,直接打开composer.json文件手动添加就行)

    "require": {"phpmailer/phpmailer": "^6.5","php": ">=5.5.0","ext-ctype": "*","ext-filter": "*","ext-hash": "*"},

2. 在PHPMailer-master路径下创建文件test.php,填入以下代码(下边的六封装了一下)

<?php
//Import PHPMailer classes into the global namespace
//These must be at the top of your script, not inside a function
use phpmailer\PHPMailer;
use phpmailer\SMTP;
use phpmailer\Exception;//这里填你自己电脑里PHPMailer.php、SMTP.php、Exception.php的路径
require 'path/to/PHPMailer/src/PHPMailer.php';
require 'path/to/PHPMailer/src/SMTP.php';
require 'path/to/PHPMailer/src/Exception.php';//我们不用Composer,所以注释掉,我们采取上边的配置并手动加载每个类文件
//Load Composer's autoloader
//require 'vendor/autoload.php';//Create an instance; passing `true` enables exceptions
$mail = new PHPMailer(true);try {//Server settings//Enable verbose debug output$mail->SMTPDebug = SMTP::DEBUG_SERVER;//Send using SMTP$mail->isSMTP();//Set the SMTP server to send through,这里我用的QQ邮箱的,其他邮箱同理$mail->Host       = 'smtp.qq.com';//Enable SMTP authentication$mail->SMTPAuth   = true;//SMTP username$mail->Username   = '这里填自己的发件邮箱';//SMTP password $mail->Password   = '这里就是上边保存的授权码,不是邮箱密码';//Enable implicit TLS encryption$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;//TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`//这里的端口可以去QQ邮箱查一下$mail->Port       = 465;//Recipients$mail->setFrom('发件人邮箱', '名称');//Add a recipient$mail->addAddress('收件人邮箱', '名称');//Name is optional$mail->addAddress('多个收件人邮箱');$mail->addReplyTo('用于接受回复的邮箱', 'Information');$mail->addCC('抄送邮箱');$mail->addBCC('收件人邮箱(能收到邮件但是不会显示邮箱)');//Attachments//Add attachments$mail->addAttachment('这里填要发送的附件的【路径/附件】');//Optional name$mail->addAttachment('这里填要发送的附件的【路径/附件】', '新名称');//Content//Set email format to HTML$mail->isHTML(true);//这里是邮件的主题$mail->Subject = 'This is a emailTest of php';//这里是邮件的正文内容$mail->Body    = 'This is the HTML message body <b>in bold!</b>';//这是非html邮件客户端的纯文本正文$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';$mail->send();echo 'Message has been sent';
} catch (Exception $e) {echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";
}

五、测试发送邮件

终端打开 PHPMailer-master路径,执行以下命令

php test.php

发送成功,此时收件邮箱里会成功收到可以去检查一下

六、封装方法

在PHPMailer-master路径下的配置文件夹中创建文件email.php,填入以下代码

<?php
/*** 发送邮件相关配置*/
return [//这里我用的QQ邮箱的,其他邮箱同理'host' => 'smtp.qq.com',//这里的端口可以去QQ邮箱查一下'port' => 465,'username' => '这里填自己的发件邮箱','password' => '这里就是上边保存的授权码,不是邮箱密码',//还可以写其他常用的配置信息
];

在PHPMailer-master路径下创建文件Email.php,填入以下代码

<?php
/*** 发送邮件类库*/
namespace phpmailer;
class Email {/*** @param $to* @param $title* @param $content* @return void*/public static function send($to,$title,$content) {if(empty($to)) {echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";}$mail = new PHPMailer(true);try {//Server settings//Enable verbose debug output$mail->SMTPDebug = SMTP::DEBUG_SERVER;//Send using SMTP$mail->isSMTP();//Set the SMTP server to send through$mail->Host       = config('email.host');//Enable SMTP authentication$mail->SMTPAuth   = true;//SMTP username$mail->Username   = config('email.username');//SMTP password$mail->Password   = config('email.password');//Enable implicit TLS encryption$mail->SMTPSecure = PHPMailer::ENCRYPTION_SMTPS;//TCP port to connect to; use 587 if you have set `SMTPSecure = PHPMailer::ENCRYPTION_STARTTLS`//这里的端口可以去QQ邮箱查一下$mail->Port       = config('email.port');//Recipients$mail->setFrom(config('email.username'), '名称');//Add a recipient$mail->addAddress($to);//Name is optional$mail->addReplyTo(用于接受回复的邮箱m', 'Information');$mail->addCC('抄送邮箱');$mail->addBCC('收件人邮箱(能收到邮件但是不会显示邮箱)');//Attachments//Add attachments$mail->addAttachment('这里填要发送的附件的【路径/附件】');//Optional name$mail->addAttachment('这里填要发送的附件的【路径/附件】', '新名称');//Content//Set email format to HTML$mail->isHTML(true);$mail->Subject = $title;$mail->Body    = $content;$mail->AltBody = 'This is the body in plain text for non-HTML mail clients';$mail->send();echo 'Message has been sent';} catch (Exception $e) {echo "Message could not be sent. Mailer Error: {$mail->ErrorInfo}";}}
}

调用上边的方法来测试一下,代码如下

<?phppublic function index(){\phpmailer\Email::send('******qq.com','邮件标题','邮件正文内容');return "发送邮件成功!";}
}

发送成功

PHPMailer实现QQ邮箱发送邮件相关推荐

  1. PHPMailer向QQ邮箱发送邮件

    第一步 首先登录 QQ邮箱,点击顶部的"设置",然后点击"账户"标签页 第二步 找到"POP3/IMAP/SMTP/Exchange/CardDAV/ ...

  2. PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件

    作为PHP入门开发者,常常有这种述求:自己的网站中需要添加一个使用自己的域名作为发件人邮件地址的自动发送邮件的方法,用于诸如给用户发送验证码.通知信息等.比如:我的某个用户注册模块,需要使用regis ...

  3. 板邓:PHP下利用PHPMailer配合QQ邮箱下的域名邮箱发送邮件(转)

    作为PHP入门开发者,常常有这种述求:自己的网站中需要添加一个使用自己的域名作为发件人邮件地址的自动发送邮件的方法,用于诸如给用户发送验证码.通知信息等.比如:我的某个用户注册模块,需要使用regis ...

  4. php模拟登录qq邮箱_PHP 利用QQ邮箱发送邮件的实现

    这篇文章主要介绍了关于PHP 利用QQ邮箱发送邮件的实现,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下在 PHP 应用开发中,往往需要验证用户邮箱.发送消息通知,而使用 PHP 内置的 ...

  5. phpmail通过qq发邮箱失败_PHP中利用PHPMailer配合QQ邮箱实现发邮件

    phpmailer实现给网站用户发送邮件,WordPress好像禁用了mail()函数,也不能直接使用自带的发送邮件,以防止暴露IP PHPMailer的介绍: 可运行在任何平台之上 支持SMTP验证 ...

  6. PHP中利用PHPMailer配合QQ邮箱实现发邮件

    前言: 由于作业的需要,要实现给我们的网站用户发送邮件,于是就有了这篇博客.以下的内容是我结合网上的例子加上自己的实践的出来的.希望对大家有帮助. PHPMailer的介绍: 优点: 可运行在任何平台 ...

  7. java发送qq邮箱不成功_java,_使用QQ邮箱发送邮件遇到的问题,java - phpStudy

    使用QQ邮箱发送邮件遇到的问题 代码是在网上抄的别人今年写的,但是我运行起来一直报错,也不知道什么原因,请大神帮忙指点一下::谢谢!!! 以下是我的代码 public class Sendmail8 ...

  8. legend3---lavarel中使用qq邮箱发送邮件

    legend3---lavarel中使用qq邮箱发送邮件 一.总结 一句话总结: 第一步:配置邮箱做服务器,比如qq邮箱,网易163邮箱 第二步:配置lavarel的配置文件 第三部:写邮件发送代码就 ...

  9. python3利用smtplib通过qq邮箱发送邮件

    前言 本文主要给大家介绍了关于python3 smtplib通过qq邮箱发送邮件的相关内容, smtplib模块是smtp简单邮件传输协议客户端的实现,为了通用性,有时候发送邮件的时候要带附件或图片, ...

最新文章

  1. Quartus和Modelsim中使用`include包含头文件的对比
  2. 获取访问者的IP地址
  3. python3 module 'pexpect' has no attribute 'spawn' 解决方法
  4. 云计算之路-阿里云上:一场暴风雨的袭击
  5. python第六章函数课后答案_浙大PTA-Python题库 函数题(6-1~6-6)题解
  6. 川大 计算机 博士 毕业要求,川大酝酿新规:博士生毕业不能直接当讲师
  7. caffe学习笔记(1)
  8. 【nodejs原理源码赏析(5)】net模块与通讯的实现
  9. php 检测 变量是否设置,PHP中检测一个变量是否有设置的函数是什么?
  10. Red Giant Universe 3.0.2 for After Effects 破解版 Mac 红巨星宇宙特效插件包预设
  11. lte网络是什么意思
  12. 大唐凌烟阁二十四功臣
  13. 如何xp计算机每天定时关机,WindowsXP电脑可以设置定时关机方法
  14. hive插入多条数据sql_HIVE sql使用总结
  15. mysql++简单应用_MySQL简单应用之视图(view)
  16. php小于neq qe,ThinkPHP eq neq if 标签
  17. 编译原理 —— 什么是语法分析
  18. vs2019生成的exe文件在别人电脑运行不了
  19. 小孔成像总结_【初中物理】物理解题技巧+方法总结
  20. 自媒体视频剪辑,怎样去掉视频中的字幕和水印

热门文章

  1. 钱姓——姓氏起源(聚集地、家谱、历史名人)
  2. CentOS7 安装 yarn
  3. ll命令不可用,ll:未找到命令 问题解决
  4. android 自定义关机界面,android源码探索之定制android关机界面的方法
  5. mysql命令行登录 端口_Mysql命令行常用操作
  6. Linux NUMA
  7. 怎样快速制作多段视频的快进和慢动作效果
  8. ERP解决方案提供商法里达巴德
  9. java加价_在Woocommerce Force Sells旁边加价
  10. python高级爬虫笔记(4)