在 PHP 應用開發中,往往需要驗證用戶郵箱、發送消息通知,而使用 PHP 內置的 mail() 函數,則需要郵件系統的支持。

如果熟悉 IMAP/SMTP 協議,結合 Socket 功能就可以編寫郵件發送程序了,不過開發這樣一個程序並不容易。

好在 PHPMailer 封裝的足夠強大,使用它可以更加便捷的發送郵件,免去了我們很多額外的麻煩。

PHPMailer

PHPMailer 是一個封裝好的 PHP 郵件發送類,支持發送 HTML 內容的電子郵件,以及可以添加附件發送,並不像 PHP 本身 mail() 函數需要服務器環境支持,您只需要設置郵件服務器以相關信息就能實現郵件發送功能。

PHP擴展支持

PHPMailer 需要 PHP 的 sockets 擴展支持,而登錄 QQ 郵箱 SMTP 服務器則必須通過 SSL 加密,故 PHP 還得包含 openssl 的支持。

↑ 使用 phpinfo() 函數查看 socket 和 openssl 擴展信息(wamp server 默認啟用了該擴展)。

PHPMailer 核心文件

↑ 在本文中只需要 class.phpmailer.php 和 PHPMailer/class.smtp.php。

QQ 郵箱設置

所有的主流郵箱都支持 SMTP 協議,但並非所有郵箱都默認開啟,您可以在郵箱的設置里面手動開啟。

第三方服務在提供了賬號和密碼之后就可以登錄 SMTP 服務器,通過它來控制郵件的中轉方式。

開啟 SMTP 服務

↑ 選擇 IMAP/SMTP 服務,點擊開啟服務。

驗證密保

↑ 發送短信“配置郵件客戶端”至1069-0700-69。

獲取授權碼

↑ SMTP 服務器認證密碼,需要妥善保管(PS:密碼直接沒有空格)。

PHP發送郵件

基本代碼

下面的代碼演示了 PHPMailer 的使用方法,注意 PHPMailer 實例的配置過程。

//引入PHPMailer的核心文件

require_once("PHPMailer/class.phpmailer.php");require_once("PHPMailer/class.smtp.php");//實例化PHPMailer核心類

$mail = newPHPMailer();//是否啟用smtp的debug進行調試 開發環境建議開啟 生產環境注釋掉即可 默認關閉debug調試模式

$mail->SMTPDebug = 1;//使用smtp鑒權方式發送郵件

$mail->isSMTP();//smtp需要鑒權 這個必須是true

$mail->SMTPAuth = true;//鏈接qq域名郵箱的服務器地址

$mail->Host = 'smtp.qq.com';//設置使用ssl加密方式登錄鑒權

$mail->SMTPSecure = 'ssl';//設置ssl連接smtp服務器的遠程服務器端口號

$mail->Port = 465;//設置發送的郵件的編碼

$mail->CharSet = 'UTF-8';//設置發件人昵稱 顯示在收件人郵件的發件人郵箱地址前的發件人姓名

$mail->FromName = '發件人昵稱';//smtp登錄的賬號 QQ郵箱即可

$mail->Username = '12345678@qq.com';//smtp登錄的密碼 使用生成的授權碼

$mail->Password = '**********';//設置發件人郵箱地址 同登錄賬號

$mail->From = '12345678@qq.com';//郵件正文是否為html編碼 注意此處是一個方法

$mail->isHTML(true);//設置收件人郵箱地址

$mail->addAddress('87654321@qq.com');//添加多個收件人 則多次調用方法即可

$mail->addAddress('87654321@163.com');//添加該郵件的主題

$mail->Subject = '郵件主題';//添加郵件正文

$mail->Body = '

Hello World

';//為該郵件添加附件

$mail->addAttachment('./example.pdf');//發送郵件 返回狀態

$status = $mail->send();

封裝方法

如果要直接使用 PHPMailer 發送郵件,則需要進行繁瑣的配置,這樣做多少會降低效率。

為了簡化調用過程,我在其基礎上進行了二次封裝,只需要配置賬號、密碼和昵稱,就可以定制你自己的 QQMailer 類了。

<?phprequire_once 'PHPMailer/class.phpmailer.php';require_once 'PHPMailer/class.smtp.php';classQQMailer

{public static $HOST = 'smtp.qq.com'; //QQ 郵箱的服務器地址

public static $PORT = 465; //smtp 服務器的遠程服務器端口號

public static $SMTP = 'ssl'; //使用 ssl 加密方式登錄

public static $CHARSET = 'UTF-8'; //設置發送的郵件的編碼

private static $USERNAME = '123456789@qq.com'; //授權登錄的賬號

private static $PASSWORD = '****************'; //授權登錄的密碼

private static $NICKNAME = 'woider'; //發件人的昵稱

/**

* QQMailer constructor.

* @param bool $debug [調試模式]*/

public function __construct($debug = false)

{$this->mailer = newPHPMailer();$this->mailer->SMTPDebug = $debug ? 1 : 0;$this->mailer->isSMTP(); //使用 SMTP 方式發送郵件

}/**

* @return PHPMailer*/

public functiongetMailer()

{return $this->mailer;

}private functionloadConfig()

{/*Server Settings*/

$this->mailer->SMTPAuth = true; //開啟 SMTP 認證

$this->mailer->Host = self::$HOST; //SMTP 服務器地址

$this->mailer->Port = self::$PORT; //遠程服務器端口號

$this->mailer->SMTPSecure = self::$SMTP; //登錄認證方式

/*Account Settings*/

$this->mailer->Username = self::$USERNAME; //SMTP 登錄賬號

$this->mailer->Password = self::$PASSWORD; //SMTP 登錄密碼

$this->mailer->From = self::$USERNAME; //發件人郵箱地址

$this->mailer->FromName = self::$NICKNAME; //發件人昵稱(任意內容)

/*Content Setting*/

$this->mailer->isHTML(true); //郵件正文是否為 HTML

$this->mailer->CharSet = self::$CHARSET; //發送的郵件的編碼

}/**

* Add attachment

* @param $path [附件路徑]*/

public function addFile($path)

{$this->mailer->addAttachment($path);

}/**

* Send Email

* @param $email [收件人]

* @param $title [主題]

* @param $content [正文]

* @return bool [發送狀態]*/

public function send($email, $title, $content)

{$this->loadConfig();$this->mailer->addAddress($email); //收件人郵箱

$this->mailer->Subject = $title; //郵件主題

$this->mailer->Body = $content; //郵件信息

return (bool)$this->mailer->send(); //發送郵件

}

}QQMailer.php

require_once 'QQMailer.php';//實例化 QQMailer

$mailer = new QQMailer(true);//添加附件

$mailer->addFile('20130VL.jpg');//郵件標題

$title = '願得一人心,白首不相離。';//郵件內容

$content = <<皚如山上雪,皎若雲間月。
聞君有兩意,故來相決絕。
今日斗酒會,明旦溝水頭。
躞蹀御溝上,溝水東西流。
凄凄復凄凄,嫁娶不須啼。
願得一人心,白首不相離。
竹竿何裊裊,魚尾何簁簁!
男兒重意氣,何用錢刀為!

EOF;//發送QQ郵件

$mailer->send('123456789@qq.com', $title, $content);

測試結果

php $mail = new phpmailer();,PHP 利用QQ郵箱發送郵件「PHPMailer」相关推荐

  1. java 新浪 发送邮件_使用javamail新浪郵箱發送遇到的問題(已解決)

    打印的日志為:250 ok queue id 361458395651 同一段代碼163郵箱發送成功了,新浪貌似是發送成功了,其實還是發送失敗的郵件,原代碼如下 Properties props = ...

  2. php發送郵件_PHP发送邮件类库PHPMailer的简单使用

    最近需要用到发送邮件的功能,原本是用PHP自带的mail()函数发送的.php mail()这个方法非常简单.方便.易用,但是除了网易邮箱.QQ邮箱.GMAIL邮箱等常用的邮箱可以收到之外,经测试HO ...

  3. php 發送郵件的方式,php带抄送和密件抄送的邮件发送方法

    作者:work24 字体: 类型:转载 这篇文章主要介绍了php带抄送和密件抄送的邮件发送方法,涉及php中mail函数的使用技巧,非常具有实用价值,需要的朋友可以参考下 本文实例讲述了php带抄送和 ...

  4. 發送郵件中常见的异常信息

    当邮件到达不了用户信箱时的自我检查办法关您反馈的您的企业邮局无法和新浪免费邮箱通信 首先要做的事 1.所做测试均在问题服务器上进行. 2.确认问题服务器的IP(或整个IP段)不在SBL.RBL.CBL ...

  5. php通过qq邮箱发送邮件,PHP 利用QQ邮箱发送邮件「PHPMailer」

    在 PHP 应用开发中,往往需要验证用户邮箱.发送消息通知,而使用 PHP 内置的 mail() 函数,则需要邮件系统的支持. 如果熟悉 IMAP/SMTP 协议,结合 Socket 功能就可以编写邮 ...

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

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

  7. ThinkPHP5.0之PHPmailer发送邮箱(qq、163)

    ThinkPHP5.0之PHPmailer发送邮箱(qq.163) 下载phpmailer, 然后在thinkphp5 目录下的 扩展类库 extend目录下 新建phpmailer目录. 把你下载的 ...

  8. qq企业邮箱php发送实例6,PHP利用QQ免费邮箱发送邮件实例

    本例子是利用phpmailer来登录QQ邮件然后利用QQ邮件向指定邮件发送一封邮件的例子,希望本例子能帮助到各位同学. PHP发邮件的例子,发邮件当然需要一个客户端邮箱,今天这个例子是使用QQ免费企业 ...

  9. java qq邮箱服务器端口_[Java教程]javamail 利用qq邮箱做邮箱服务器,简单小demo

    [Java教程]javamail 利用qq邮箱做邮箱服务器,简单小demo 0 2016-07-12 10:00:10 首先maven:javax.mailmail1.4.1 用户名密码验证:1 pu ...

最新文章

  1. 回顾以前的线程安全的类
  2. pygame判断鼠标左键_美商海盗船DarkCoreRGB Pro SE无线电竞鼠标评测
  3. 从css样式表中抽取元素尺寸
  4. LeetCode —— 145. 二叉树的后序遍历【递归与迭代】(Python)
  5. python 安装第三方库/包(命令/详细注释),如安装pyinstaller库
  6. 功能表单之评星、进度条、颜色选择器的使用——JEPLUS软件快速开发平台
  7. 基于深度卷积神经网络的玉米病害实时识别检测系统
  8. python数据拟合
  9. Uva 11054 - Wine trading in Gergovia(模拟)
  10. (CVPR2019)图像语义分割(22) FickleNet-使用随机推理的用于弱监督和半监督的图像语义分割
  11. iOS当期时间和日期选择器
  12. 分库分表面试题及答案
  13. [转载]在安装win7系统时如何不产生100M的系统保留分区
  14. Web前端开发面试题——将字符串转成驼峰写法
  15. 吉他的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  16. 灵飞经3 印神无双 第十四章 印神古墓 3
  17. 开源的 CMD 配色工具:ColorTool
  18. 爱快ikuai软路由远程维护用户名
  19. 仿淘宝商品界面(html div+css)
  20. 直通BAT面试算法精品课购买 算法 牛客网 优惠码 直通BAT

热门文章

  1. 获取easyui Tree节点的子节点
  2. 培训完软件测试后,真的可以找到工作吗?
  3. 央企招聘:中国南方航空2023明珠工程师招聘正式启动
  4. HP EliteBook 开启虚拟化
  5. python的浮点数_python中浮点数的精度
  6. 第3讲 Android Camera2 API 概述
  7. MySQL——使用docker镜像拉取MySQL
  8. 使用pg_hint_plan固定Postgresql执行计划
  9. oracle数据库查询并排序语录句,ORACLE系统查询话语
  10. vue安装 ant-design-vue