搜索
首页后端开发php教程PHP通过PHPMailer类库实现QQ邮箱发送方法

  其实PHP邮箱发送功能并非每个项目都一定用得到,但其实每个完整的项目,一般都会包含一个PHP邮箱发送功能。


    一般邮箱发送功能普遍用于注册激活,密码找回,以及留言回复等等功能上。而且这也是很多人头疼的问题,毕竟这个功能并非是几行代码就能实现的,而且也不是你用时间和精力去就能写出来的。而这个功能其实已经是一个成品,现在需要的是让我们如何去使用它,那么下面我们就来讲解一下如何利用PHPMailer类库实现PHP邮箱发送功能。



  首先,我们来说一下,如何使用自己的域名作为发送邮件的邮件地址的方法如何实现呢?


  PHP环境下,是提供了发送邮件的函数mail()的,不过该函数要求服务器支持sendmail或者必须设置一台不需要中继的邮件发送服务器,但现在要找到一台不需要身份验证的邮件发送中继几乎不可能,所以使用mail函数往往无法成功发送电子邮件。那么php就无法发送邮件了么?答案是否定的,自己如果熟悉POP3/SMTP协议,结合socket功能就可以编写高效稳定的邮件发送程序,但这种变通方法相当于使用php编写了一个POP3/SMTP客户端了,对一般的开发者来说尚有难度。


  不过幸好现在的互联网资源很是丰富,这时候PHPMailer诞生了。


  PHPMailer有什么优点?

  可运行在任何平台之上

  支持SMTP验证

  发送邮时指定多个收件人,抄送地址,暗送地址和回复地址;注:添加抄送、暗送仅win平台下smtp方式支持

  支持多种邮件编码包括:8bit,base64,binary和quoted-printable

  支持冗余SMTP服务器,即可以指定主smtp服务器地址也只可以指定备份smtp服务器

  支持带附件的邮件,可以为邮件添加任意格式的附件---当然得你的服务器有足够大的带宽支撑

  自定义邮件头信息,这跟php中通过header函数发送头信息类似

  支持将邮件正文制作成HTMl内容,那么就可以在邮件正文中插入图片

  灵活的debug支持

  经测试兼容的SMTP服务器包括:Sendmail,qmail,Postfix,Imail,Exchange等


  如何下载PHPMailer代码包?

  PHPMailer项目地址:https://github.com/PHPMailer/PHPMailer 使用git命令克隆到本地,或直接在该项目页面的右下方点击“ Download ZIP ”即可获取到完整的PHPMailer代码包。


  怎样使用PHPMailer配合qq邮箱下的“域名邮箱”使用自己的域名作为邮箱地址来发送邮件?

  ====

  以下分两部分,讲解使用自己的域名免费开通qq邮箱下的“域名邮箱”以及PHP环境中使用PHPMailer并配合刚开通的“域名邮箱”自动发送邮件。

  ====


  第一部分:开通qq邮箱下的“域名邮箱”


  由于开通“域名邮箱”仅是操作方式的理解,这部分仅作略讲。


  进入QQ邮箱,点击页面左上方“设置”,再点击“邮箱设置”下的“账户”选项卡,拖动滚动条,即可看到“域名邮箱”,点击“管理域名邮箱”即可进入域名邮箱添加的页面;或者直接点击http://domain.mail.qq.com/


  点击“创建域名邮箱”,按页面提示添加自己的域名并验证。PS:若您的qq邮箱下成功添加了“域名邮箱”,那么进入qq邮箱后,页面左上方“设置”按钮之后会有“域名邮箱”的文字为该域名邮箱添加自己专属的邮件地址,点击审核通过的“域名邮箱”中的“成员管理”,点击“添加成员”,输入自己的域名下心仪的邮箱名,然后添加qq号(该qq号即作为该新添加的邮箱的使用者,该qq号需开通qq邮箱且未关闭数字账号)


  刚刚输入的那个qq号的qq邮箱会收到一封开通域名邮箱的通知邮件,在邮件中点击“接受这个邮箱账号”,利用PHPMailer发送邮件的发件人邮箱地址即设置完成,为了便于叙述这个邮箱地址称之为“发件人邮箱”。


  为了该qq号的登录密码安全,请为该qq好设置“独立密码”,在qq邮箱“设置”-“账户”-“账户安全”进行设置,在该处设置的密码,为了便于本文叙述,称之为“独立密码”。


  至此qq邮箱下的“域名邮箱”开通并添加了待会使用PHPMailer发送作为发件人的邮箱地址。这里列出几项关键的待会PHPMailer需要使用的信息:QQ号,上述第三步添加的qq号码、“独立密码”、“发件人邮箱”、发件人姓名...


  第二部分:使用PHPMailer编写发送邮箱的代码


  PHPMailer需PHP的socket扩展支持,而PHPMailer链接qq域名邮箱时需要ssl加密方式(qq邮箱最近做了限制,新开域名邮箱不再允许通过smtp协议的25端口的普通链接方式链接,只允许ssl的465或587端口[我的一个域名邮箱内测期开通的域名邮箱目前25端口还是可以链接的,可能是安全策略,限制了新开域名邮箱账户的25端口]),固php还得openssl的支持,可以查看phpinfo,如下两项均存在则可以使用,其中openssl版本号之类不用管;许多虚拟主机中的php是不支持openssl扩展的,那你可能就悲剧了。


  这里需要注意了,在这之前,我们必须要在php环境下开启openssl


  这部分仅作代码示例,代码中有部分注释解释,做抛砖引玉。


  下载下来的PHPMailer解压后进行瘦身,仅需要class.phpmailer.php、class.pop3.php、class.smtp.php以及PHPMailerAutoload.php四个文件,language文件夹可要可不要,那个主要用于debug调试时的显示信息。看下class.phpmailer.php的文件大小,110kb多,挺吓人的。

<?php
    //引入PHPMailer的核心文件 使用require_once包含避免出现PHPMailer类重复定义的警告
    require_once("phpmailer/class.phpmailer.php");
 
    //示例化PHPMailer核心类
    $mail = new PHPMailer();
 
    //是否启用smtp的debug进行调试 开发环境建议开启 生产环境注释掉即可 默认关闭debug调试模式
    $mail->SMTPDebug = 1;
 
    //使用smtp鉴权方式发送邮件,当然你可以选择pop方式 sendmail方式等 本文不做详解
    //可以参考http://phpmailer.github.io/PHPMailer/当中的详细介绍
    $mail->isSMTP();
 
    //smtp需要鉴权 这个必须是true
    $mail->SMTPAuth=true;
 
    //链接qq域名邮箱的服务器地址
    $mail->Host = &#39;smtp.qq.com&#39;;
 
    //设置使用ssl加密方式登录鉴权
    $mail->SMTPSecure = &#39;ssl&#39;;
 
    //设置ssl连接smtp服务器的远程服务器端口号 可选465或587
    $mail->Port = 465;
 
    //设置smtp的helo消息头 这个可有可无 内容任意
    $mail->Helo = &#39;Hello smtp.qq.com Server&#39;;
 
    //设置发件人的主机域 可有可无 默认为localhost 内容任意,建议使用你的域名
    $mail->Hostname = &#39;jjonline.cn&#39;;
 
    //设置发送的邮件的编码 可选GB2312 我喜欢utf-8 据说utf8在某些客户端收信下会乱码
    $mail->CharSet = &#39;UTF-8&#39;;
 
    //设置发件人姓名(昵称) 任意内容,显示在收件人邮件的发件人邮箱地址前的发件人姓名
    $mail->FromName = &#39;晶晶在线&#39;;
 
    //smtp登录的账号 这里填入字符串格式的qq号即可
    $mail->Username =&#39;888888&#39;;
 
    //smtp登录的密码 这里填入“独立密码” 若为设置“独立密码”则填入登录qq的密码 建议设置“独立密码”
    $mail->Password = &#39;xxxxxxx&#39;;
 
    //设置发件人邮箱地址 这里填入上述提到的“发件人邮箱”
    $mail->From = &#39;register@jjonline.cn&#39;;
 
    //邮件正文是否为html编码 注意此处是一个方法 不再是属性 true或false
    $mail->isHTML(true);
 
    //设置收件人邮箱地址 该方法有两个参数 第一个参数为收件人邮箱地址 第二参数为给该地址设置的昵称 不同的邮箱系统会自动进行处理变动 
    //这里第二个参数的意义不大
    $mail->addAddress(&#39;xxx@qq.com&#39;,&#39;晶晶在线用户&#39;);
 
    //添加多个收件人 则多次调用方法即可
    $mail->addAddress(&#39;xxx@163.com&#39;,&#39;晶晶在线用户&#39;);
 
    //添加该邮件的主题
    $mail->Subject = &#39;PHPMailer发送邮件的示例&#39;;
 
    //添加邮件正文 上方将isHTML设置成了true,则可以是完整的html字符串 
    //如:使用file_get_contents函数读取本地的html文件
 
    $mail->Body = "这是一个PHPMailer发送邮件的一个测试用例";
 
    //为该邮件添加附件 该方法也有两个参数 第一个参数为附件存放的目录(相对目录、或绝对目录均可) 第二参数为在邮件附件中该附件的名称
    $mail->addAttachment(&#39;./d.jpg&#39;,&#39;mm.jpg&#39;);
 
    //同样该方法可以多次调用 上传多个附件
    $mail->addAttachment(&#39;./Jlib-1.1.0.js&#39;,&#39;Jlib.js&#39;);
 
    //发送命令 返回布尔值
    //PS:经过测试,要是收件人不存在,若不出现错误依然返回true 也就是说在发送之前 自己需要些方法实现检测该邮箱是否真实有效
    $status = $mail->send();
 
    //简单的判断与提示信息
    if($status) {
      echo &#39;发送邮件成功&#39;;
    }else{
      echo &#39;发送邮件失败,错误信息未:&#39;.$mail->ErrorInfo;
    }
?>

特别提示:上述代码段仅作参考,若要集成到网站系统中,则可以将代码段封装成函数或类库进行调用;另外PHPMailer在win32平台下是支持添加抄送、暗送的。因为鄙人服务器用的centos,未作测试。

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
11个最佳PHP URL缩短脚本(免费和高级)11个最佳PHP URL缩短脚本(免费和高级)Mar 03, 2025 am 10:49 AM

长URL(通常用关键字和跟踪参数都混乱)可以阻止访问者。 URL缩短脚本提供了解决方案,创建了简洁的链接,非常适合社交媒体和其他平台。 这些脚本对于单个网站很有价值

在Laravel中使用Flash会话数据在Laravel中使用Flash会话数据Mar 12, 2025 pm 05:08 PM

Laravel使用其直观的闪存方法简化了处理临时会话数据。这非常适合在您的应用程序中显示简短的消息,警报或通知。 默认情况下,数据仅针对后续请求: $请求 -

构建具有Laravel后端的React应用程序:第2部分,React构建具有Laravel后端的React应用程序:第2部分,ReactMar 04, 2025 am 09:33 AM

这是有关用Laravel后端构建React应用程序的系列的第二个也是最后一部分。在该系列的第一部分中,我们使用Laravel为基本的产品上市应用程序创建了一个RESTFUL API。在本教程中,我们将成为开发人员

简化的HTTP响应在Laravel测试中模拟了简化的HTTP响应在Laravel测试中模拟了Mar 12, 2025 pm 05:09 PM

Laravel 提供简洁的 HTTP 响应模拟语法,简化了 HTTP 交互测试。这种方法显着减少了代码冗余,同时使您的测试模拟更直观。 基本实现提供了多种响应类型快捷方式: use Illuminate\Support\Facades\Http; Http::fake([ 'google.com' => 'Hello World', 'github.com' => ['foo' => 'bar'], 'forge.laravel.com' =>

php中的卷曲:如何在REST API中使用PHP卷曲扩展php中的卷曲:如何在REST API中使用PHP卷曲扩展Mar 14, 2025 am 11:42 AM

PHP客户端URL(curl)扩展是开发人员的强大工具,可以与远程服务器和REST API无缝交互。通过利用Libcurl(备受尊敬的多协议文件传输库),PHP curl促进了有效的执行

在Codecanyon上的12个最佳PHP聊天脚本在Codecanyon上的12个最佳PHP聊天脚本Mar 13, 2025 pm 12:08 PM

您是否想为客户最紧迫的问题提供实时的即时解决方案? 实时聊天使您可以与客户进行实时对话,并立即解决他们的问题。它允许您为您的自定义提供更快的服务

宣布 2025 年 PHP 形势调查宣布 2025 年 PHP 形势调查Mar 03, 2025 pm 04:20 PM

2025年的PHP景观调查调查了当前的PHP发展趋势。 它探讨了框架用法,部署方法和挑战,旨在为开发人员和企业提供见解。 该调查预计现代PHP Versio的增长

Laravel中的通知Laravel中的通知Mar 04, 2025 am 09:22 AM

在本文中,我们将在Laravel Web框架中探索通知系统。 Laravel中的通知系统使您可以通过不同渠道向用户发送通知。今天,我们将讨论您如何发送通知OV

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
1 个月前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境