phpmailer发邮件常见的问题及解决方法汇总

发布于 2014-11-22 14:50:36 | 808 次阅读 | 评论: 0 | 来源: 网友投递

PHPMailer 发送电子邮件的PHP函数包PHPMailer是一个用于发送电子邮件的PHP函数包。支持发送HTML内容的电子邮件,以及可以添加附件发送,并不像PHP本身mail()函数需要服务器环境支持,您只需要设置邮件服务器以相关信息就能实现邮件发送功能。

本文为大家整理汇总了一些phpmailer发邮件常见的问题及解决方法,感兴趣的同学参考下。

PHPMailer是一个用于发送电子邮件的PHP函数包。支持发送HTML内容的电子邮件,以及可以添加附件发送,并不像PHP本身mail()函数需要服务器环境支持,您只需要设置邮件服务器以相关信息就能实现邮件发送功能。

邮件收发的原理:

在Internet上将一段文本信息从一台计算机传送到另一台计算机上,可通过两种协议来完成,即SMTP(Simple Mail Transfer Protocol,简单邮件传输协议)和POP3(Post Office Protocol,邮局协议3)。SMTP是Internet协议集中的邮件标准。在Internet上能够接收电子邮件的服务器都有SMTP。电子邮件 在发送前,发件方的SMTP服务器与接收方的SMTP服务器联系,确认接收方准备好了,则开始邮件传递;若没有准备好,发送服务器便会等待,并在一段时间 后继续与接收方邮件服务器联系。这种方式在Internet上称为“存储——转发”方式。POP3可允许E-mail客户向某一SMTP服务器发送电子邮 件,另外,也可以接收来自SMTP服务器的电子邮件。换句话说,电子邮件在客户PC机与服务提供商之间的传递是通过P0P3来完成的,而电子邮件在 Internet上的传递则是通过SMTP来实现。

如果觉得不够清楚的话,则引用网上的一张图来解释吧:

有关phpmailer的介绍可以参考官网:http://phpmailer.codeworxtech.com/

一,没有定义发送邮箱$mail->From或格式不正确,错误提示:Language string failed to load: recipients_failed test@test.com,注意,这个配置一定要正确,而且是正确的邮箱

二,没有定义邮件服务主机$mail->Host或连接失败,错误提示:Language string failed to load: connect_host

三,没有定义发送邮箱$mail->AddAddress或邮箱格式不正确,错误提示:Language string failed to load: provide_address

四,没有定义邮箱发送用户名$mail->Username,错误提示:Language string failed to load: connect_host

五,没有定义邮箱发送密码$mail->Password,错误提示:Language string failed to load: connect_host,这类错误非常明显,一般都是邮箱服务器配置不正确不能边接。

六,邮件正文编码,如果发送HTML邮件,需要定义正确的编码格式和字符,发送GBK邮件如下:

$mail->IsHTML ( true ); 是否支持HTML邮件

$mail->CharSet = "GB2312"; 字符设置

$mail->Encoding = "base64"; 编码方式

配置后可直接发送HTML邮件,如下:

PHPMailer邮件测试

PHPMailer邮件类使用错误分析

七,学会正确使用错误提示$mail->ErrorInfo查看邮件错误,可直接查找问题。

使用PHPMailer邮件类发送邮件使用非常简单,基本配置如上所示,在使用过程中正确了解错误提示,并及时了解错误原因,对于正确使用PHPMailer邮件类来说非常重要。

常见异常:

1.SMTP Error: Could not authenticate.

这个是因为smtp验证没通过,就是smtp server 的用户名和密码不正确了

$mail->Username    = "smtp@163.com";     // SMTP server username

t;Password    = "******";

$mail->Username = "smtp@163.com"; // SMTP server username $mail->Password = "******";

2.Could not execute: /usr/sbin/sendmail

这是因为

$mail->IsSendmail();  // tell the class to use Sendmail

l->IsSendmail(); // tell the class to use Sendmail

去掉上面的代码就ok了!(PHP同理)

3.关于phpmailer发送邮件产生中文乱码问题

环境一:在普通环境,即标题内容等含中文的内容是在脚本中加上去的,或从文本中获取的,只需要进行如下操作(网上有很多):

修改class.phpmailer.php中的EncodeHeader函数,改为:

public function EncodeHeader($str, $position = 'text', $pl = 0) {

$x = 0;

if ($pl){return "=?".$this->CharSet."?B?".base64_encode($str)."?=";}

ic function EncodeHeader($str, $position = 'text', $pl = 0) { $x = 0; if ($pl){return "=?".$this->CharSet."?B?".base64_encode($str)."?=";}

再改下使用这个函数的一段:

if($this->Mailer != 'mail') {

$result .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader($this->Subject),'text',1));

}

$this->Mailer != 'mail') { $result .= $this->HeaderLine('Subject', $this->EncodeHeader($this->SecureHeader($this->Subject),'text',1)); }

当然编码设置也不能少了:

$mail->CharSet="utf-8";

$mail->Encoding = "base64";

$mail->CharSet="utf-8"; $mail->Encoding = "base64";

环境二:从excel中提取内容然后再发送excel中的内容给用户,这个折腾了我好久。最终找到解决办法了。最关键的地方是:excel中的编码是 html格式的unicode,所以得使用下面这个函数将其转化为utf8

private function uc2html($str)

{

$ret = '';

for( $i=0; $i

{

$charcode = ord($str[$i*2])+256*ord($str[$i*2+1]);

$ret .= ''.$charcode.';';

}

return mb_convert_encoding($ret,'UTF-8','HTML-ENTITIES');

}

private function uc2html($str) { $ret = ''; for( $i=0; $i

测试示例代码:

/**

* Simple example script using PHPMailer with exceptions enabled

* @package phpmailer

* @version $Id$

*/

require '../class.phpmailer.php';

try {

$mail = new PHPMailer(true); //New instance, with exceptions enabled

$body              = file_get_contents('contents.html');

$body              = preg_replace('/\\\\/','', $body); //Strip backslashes

$mail->IsSMTP();                           // tell the class to use SMTP

$mail->SMTPAuth    = true;                  // enable SMTP authentication

$mail->Port        = 25;                // set the SMTP server port

$mail->Host        = "smtp.xxxx.com"; // SMTP server

$mail->Username    = "xxx@xxx.com";     // SMTP server username

$mail->Password    = "xxxx";            // SMTP server password

$mail->IsSendmail();  // tell the class to use Sendmail

$mail->AddReplyTo("xxx@sina.com","xxxx");

$mail->From        = "xxxx@m6699.com";

$mail->FromName    = "DJB";

$to = "xxx@sina.com";

$mail->AddAddress($to);

$mail->Subject   = "First PHPMailer Message";

$mail->AltBody     = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test

$mail->WordWrap    = 80; // set word wrap

$mail->MsgHTML($body);

$mail->IsHTML(true); // send as HTML

$mail->Send();

echo 'Message has been sent.';

} catch (phpmailerException $e) {

echo $e->errorMessage();

}

?>

相关阅读:

phpmailer发邮件常见的问题及解决方法汇总

PHP使用phpmailer发邮件示例

phpmailer中文乱码问题的解决方法

phpmailer通过Windows的SMTP发送邮件失败的解决方案

PHP使用PHPMailer发送邮件的简单示例

PHPMailer邮件发送的示例讲解

使用PHPMailer发送有附件的电子邮件

phpmailer发送邮件之后,获取收件人是否阅读了邮件的方法

thinkphp使用phpmailer发送邮件的方法

ThinkPHP利用PHPMailer发送邮件代码

phpmailer发送邮件示例(使用163smtp服务器)

PHPMailer发送邮件使用方法

php发邮件有时很卡,phpmailer发邮件常见的问题及解决方法汇总相关推荐

  1. 联通卡信号经常无服务器,联通卡信号不好怎么办?信号差的解决方法

    不管是联通卡还是移动卡都会有信号不好信号差的时候,主要的原因是基站少或者是有干扰等情况,不过随着三大运营商的激烈竞争,它们各自也都在提升口碑,为了抢更多的用户也在不断的完善信号问题.今天小编就以联通卡 ...

  2. qq饥荒联机版服务器没有响应,饥荒联机版专用服务器卡顿原因及解决方法汇总...

    饥荒联机版中自己的专用服务器会经常卡顿,那么是什么原因造成的呢?相信很多玩家都不太了解,下面带给大家的是饥荒联机版专用服务器卡顿原因汇总. 饥荒联机版专用服务器卡顿原因汇总 ①猪人兔人鱼人房 卡顿等级 ...

  3. “很抱歉,出现错误,Word不能启动(2)。”解决方法(转载),2023-3-3

    打开word时,出现以下错误: 很抱歉,出现错误,Word不能启动(2). 解决方法: 同时按WIN+R, 输入regedit按回车, 打开注册表, 定位到HKEY_CURRENT_USER\Soft ...

  4. 重装office和关于office “很抱歉,遇到一些临时服务器问题。” 解决方法

    重装office和关于office "很抱歉,遇到一些临时服务器问题." 解决方法 1.重装office 最近重装系统后,microsoft office没有了(以下简称offic ...

  5. 饥荒专用服务器无响应,饥荒联机版专用服务器卡顿原因及解决方法汇总

    饥荒联机版中自己的专用服务器会经常卡顿,那么是什么原因造成的呢?相信很多玩家都不太了解,下面带给大家的是饥荒联机版专用服务器卡顿原因汇总. 饥荒联机版专用服务器卡顿原因汇总 ①猪人兔人鱼人房 卡顿等级 ...

  6. 饥荒游侠服务器未响应,饥荒联机版专用服务器卡顿原因及解决方法汇总[多图]...

    饥荒联机版中自己的专用服务器会经常卡顿,那么是什么原因造成的呢?相信很多玩家都不太了解,下面带给大家的是饥荒联机版专用服务器卡顿原因汇总. 饥荒联机版专用服务器卡顿原因汇总 ①猪人兔人鱼人房 卡顿等级 ...

  7. 笔记本卡顿不流畅是什么原因_电脑经常卡顿感觉不流畅的原因以及解决方法

    首先我们看一下引起电脑卡顿的原因有哪些: 1.电脑可能感染木马病毒. 2.硬盘使用时间过长,硬盘有坏道. 3.软件开太多导致内存不足. 4.电脑磁盘中冗余或者碎片过多. 5.CPU负荷过大,或者工作不 ...

  8. 笔记本卡顿不流畅是什么原因_电脑卡顿不流畅是什么原因以及解决方法

    一般来说,引起电脑卡顿不流畅的无非就是软件和硬件问题,软件主要包括系统优化不佳,比如同时打开很多软件,造成电脑卡顿不流畅.硬件主要为电脑配置过低或者硬件故障,比如硬盘坏道.内存不足.散热不佳等造成的卡 ...

  9. 多用户用linux会很卡顿吗,新手学Linux系统,解决Linux系统卡顿的方法

    很多新手刚从事linux运维的同学,经常会问我使用linux很卡的时候该怎么办?今天小编就为大家带来解决Linux系统卡顿的方法,下面一起来看看吧. 1.检查磁盘运用状况 df -h 当发现磁盘运用率 ...

最新文章

  1. 图解Android - Zygote, System Server 启动分析
  2. linux fedora 35 彻底卸载idea2021.2.2
  3. windows桌面快捷方式图标上面怎么老是会产生一个问号解决方案
  4. java -从小到大排序
  5. 重构手册阅读笔记:重构的含义
  6. ubuntu 下安装apache服务器
  7. pca百分比取多少比较好_欧式家具沙发价格是多少?沙发怎么护理会比较好?
  8. 如何编写可移植的c/c++代码
  9. WebSocket消息推送(实现进行聊天)和WebSocket简介
  10. 《Python核心编程》第12章 习题
  11. 关系抽取(分类)总结【转载】
  12. oracle 11g DG 物理搭建 DG切换模式
  13. 三维激光雷达路沿检测
  14. php除数不能为零,0为什么不能做除数(为什么0不能作为除数)
  15. 微信公众号上传图文素材thumb_media_id的获得
  16. javascript 删除节点
  17. 关于mobi书籍文件合并
  18. 黑客养成—CTF笔记(一)
  19. 用网页打开本地exe程序
  20. 地方门户网站SEO 重点做长尾词

热门文章

  1. 多人联机射击游戏中的设计模式应用
  2. 硅谷战争:苹果谷歌微软上演三国大战
  3. ubuntu16.04安装配置fastai 0.7
  4. Windows server2003时间同步
  5. wow.js动画效果
  6. 逆变器的简介、工作原理及主要构成
  7. Flutter中常用的组件-Expanded
  8. 看不到淘宝部分图片,只能看youku视频
  9. 第一位iPhone Hacker新作:单人之力实现自动驾驶汽车
  10. 无法启动此程序因为计算机中丢失d3dx942,《骑马与砍杀》游戏运行时提示缺少d3dx9_42.dll怎么办?...