php发邮件有时很卡,phpmailer发邮件常见的问题及解决方法汇总
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邮件测试
七,学会正确使用错误提示$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发邮件常见的问题及解决方法汇总相关推荐
- 联通卡信号经常无服务器,联通卡信号不好怎么办?信号差的解决方法
不管是联通卡还是移动卡都会有信号不好信号差的时候,主要的原因是基站少或者是有干扰等情况,不过随着三大运营商的激烈竞争,它们各自也都在提升口碑,为了抢更多的用户也在不断的完善信号问题.今天小编就以联通卡 ...
- qq饥荒联机版服务器没有响应,饥荒联机版专用服务器卡顿原因及解决方法汇总...
饥荒联机版中自己的专用服务器会经常卡顿,那么是什么原因造成的呢?相信很多玩家都不太了解,下面带给大家的是饥荒联机版专用服务器卡顿原因汇总. 饥荒联机版专用服务器卡顿原因汇总 ①猪人兔人鱼人房 卡顿等级 ...
- “很抱歉,出现错误,Word不能启动(2)。”解决方法(转载),2023-3-3
打开word时,出现以下错误: 很抱歉,出现错误,Word不能启动(2). 解决方法: 同时按WIN+R, 输入regedit按回车, 打开注册表, 定位到HKEY_CURRENT_USER\Soft ...
- 重装office和关于office “很抱歉,遇到一些临时服务器问题。” 解决方法
重装office和关于office "很抱歉,遇到一些临时服务器问题." 解决方法 1.重装office 最近重装系统后,microsoft office没有了(以下简称offic ...
- 饥荒专用服务器无响应,饥荒联机版专用服务器卡顿原因及解决方法汇总
饥荒联机版中自己的专用服务器会经常卡顿,那么是什么原因造成的呢?相信很多玩家都不太了解,下面带给大家的是饥荒联机版专用服务器卡顿原因汇总. 饥荒联机版专用服务器卡顿原因汇总 ①猪人兔人鱼人房 卡顿等级 ...
- 饥荒游侠服务器未响应,饥荒联机版专用服务器卡顿原因及解决方法汇总[多图]...
饥荒联机版中自己的专用服务器会经常卡顿,那么是什么原因造成的呢?相信很多玩家都不太了解,下面带给大家的是饥荒联机版专用服务器卡顿原因汇总. 饥荒联机版专用服务器卡顿原因汇总 ①猪人兔人鱼人房 卡顿等级 ...
- 笔记本卡顿不流畅是什么原因_电脑经常卡顿感觉不流畅的原因以及解决方法
首先我们看一下引起电脑卡顿的原因有哪些: 1.电脑可能感染木马病毒. 2.硬盘使用时间过长,硬盘有坏道. 3.软件开太多导致内存不足. 4.电脑磁盘中冗余或者碎片过多. 5.CPU负荷过大,或者工作不 ...
- 笔记本卡顿不流畅是什么原因_电脑卡顿不流畅是什么原因以及解决方法
一般来说,引起电脑卡顿不流畅的无非就是软件和硬件问题,软件主要包括系统优化不佳,比如同时打开很多软件,造成电脑卡顿不流畅.硬件主要为电脑配置过低或者硬件故障,比如硬盘坏道.内存不足.散热不佳等造成的卡 ...
- 多用户用linux会很卡顿吗,新手学Linux系统,解决Linux系统卡顿的方法
很多新手刚从事linux运维的同学,经常会问我使用linux很卡的时候该怎么办?今天小编就为大家带来解决Linux系统卡顿的方法,下面一起来看看吧. 1.检查磁盘运用状况 df -h 当发现磁盘运用率 ...
最新文章
- 图解Android - Zygote, System Server 启动分析
- linux fedora 35 彻底卸载idea2021.2.2
- windows桌面快捷方式图标上面怎么老是会产生一个问号解决方案
- java -从小到大排序
- 重构手册阅读笔记:重构的含义
- ubuntu 下安装apache服务器
- pca百分比取多少比较好_欧式家具沙发价格是多少?沙发怎么护理会比较好?
- 如何编写可移植的c/c++代码
- WebSocket消息推送(实现进行聊天)和WebSocket简介
- 《Python核心编程》第12章 习题
- 关系抽取(分类)总结【转载】
- oracle 11g DG 物理搭建 DG切换模式
- 三维激光雷达路沿检测
- php除数不能为零,0为什么不能做除数(为什么0不能作为除数)
- 微信公众号上传图文素材thumb_media_id的获得
- javascript 删除节点
- 关于mobi书籍文件合并
- 黑客养成—CTF笔记(一)
- 用网页打开本地exe程序
- 地方门户网站SEO 重点做长尾词
热门文章
- 多人联机射击游戏中的设计模式应用
- 硅谷战争:苹果谷歌微软上演三国大战
- ubuntu16.04安装配置fastai 0.7
- Windows server2003时间同步
- wow.js动画效果
- 逆变器的简介、工作原理及主要构成
- Flutter中常用的组件-Expanded
- 看不到淘宝部分图片,只能看youku视频
- 第一位iPhone Hacker新作:单人之力实现自动驾驶汽车
- 无法启动此程序因为计算机中丢失d3dx942,《骑马与砍杀》游戏运行时提示缺少d3dx9_42.dll怎么办?...