当前位置:  编程技术>php
本页文章导读:
    ▪PHPMailer收发邮件标题、发件人、内容乱码问题的终极解决方法      第一:修改邮件内容乱码: PHPMailer类文件:class.phpmailer.php 页: 查找:function EncodeHeader ($str, $position = 'text') { 修改成:   代码示例: function EncodeHeader ($str, $position = 'text', $pl = 0) { if ( $pl ) r.........
    ▪PHPmailer发送邮件及乱码问题的解决      PHPMailer的下载地址:http://phpmailer.codeworxtech.com 安装: 打开PHP.INI文件,找到如下位置,添加红线部分的内容,路径就是PHPMailer存放的位置: 保存,重启apache。 举一个phpmailer发信的例子。 1、.........
    ▪PHPMailer发送邮件中文附件名乱码的解决办法      假如使用PHPMailer类要发送的附件是“测试.txt”,如果在添加附件的时候强制使用指定文件名的方式:   代码示例: $mail->AddAttachment($attach, $attach);   发送过去的附件文件名将会是乱码,如.........

[1]PHPMailer收发邮件标题、发件人、内容乱码问题的终极解决方法
    来源: 互联网  发布时间: 2013-12-24

第一:修改邮件内容乱码:
PHPMailer类文件:class.phpmailer.php 页:
查找:function EncodeHeader ($str, $position = 'text') {
修改成:
 

代码示例:
function EncodeHeader ($str, $position = 'text', $pl = 0) {
if ( $pl ) return "=?" . $this->CharSet . "?B?" . base64_encode($str) . "?=";

为这个函数多定义的一个参数。

自然要修改所有调用这个函数的地方的参数。
查找:EncodeHeader(
如下类似这样的都要改:
 

代码示例:
$result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject)));
 

改成:
 

代码示例:
$result .= $this->HeaderLine("Subject", $this->EncodeHeader(trim($this->Subject),'text', 1));

意思是定义第三个参考为1,好可以调用我们改的函数里的那个判断语句。

改了这里,当然你要记得在调用这个类的时侯,设置CharSet=UTF8啊。
这样,这个判断语句才能转UTF8不乱码了。
可以这么写的:
 

代码示例:
$mail = new PHPMailer();
$mail->CharSet = "utf8";

第二:修复邮件标题乱码
Subject是处理邮件标题,你要找准这个地方了。像我的是这样调用了
 

代码示例:
$mail = new PHPMailer();
$mail->Subject="某某标题";

那么,像这样的,改成这样:
 

代码示例:
$mail->Subject = "=?utf-8?B?".base64_encode("某某标题")."?=";
 

也是转码啊。

第三:修复其他地方乱码
基本原理跟第二个修复一样的。
FromName是处理发件人来着。
找到发件人姓名的地方:
我的是这样写的:
 

代码示例:
$mail = new PHPMailer();
$mail->FromName = "=?utf-8?B?".base64_encode("黄牌网络客户网上留言】")."?=";

如果能搞定以上三个地方,Phpmailer发送中文邮件时的乱码问题,基本就可以搞定。

附,一个修改好的完整phpmailer发邮件的实例代码:http://file./code/201304/phpmailer_lyb_.zip。

您可能感兴趣的文章:
PHPMailer发送邮件的实例分享
phpmailer发送gmail邮件的例子
phpmailer发送网易126邮箱的例子
phpmailer发送yahoo邮件的例子
phpmailer类实现邮件群发的实例代码
PHPMailer发送邮件代码实例(ubuntu系统)
PHPMailer发送带附件邮件的例子
PHPmailer发送邮件及乱码问题的解决
PHPMailer发送邮件中文附件名乱码的解决办法
PHPMailer邮件标题中文乱码的解决方法
PHPMailer邮件类发送邮件举例(163邮箱)
phpmailer 发送邮件中文乱码问题的解决方法总结
phpmailer发送邮件及实现密码找回功能的代码
PHPmailer邮件群发的入门例子
PHPmailer 邮件群发的范例参考
phpmailer发邮件中文乱码问题如何解决
phpmailer 类发送邮件乱码解决方法
PHPMailer批量发送邮件的实例代码
有关phpmailer的用法
php使用phpMailer发送邮件的例子
phpmailer实现的简单openvpn用户认证的代码
PHPMailer 中文使用说明
phpmailer发送邮件的例子


    
[2]PHPmailer发送邮件及乱码问题的解决
    来源: 互联网  发布时间: 2013-12-24

PHPMailer的下载地址:http://phpmailer.codeworxtech.com
安装:
打开PHP.INI文件,找到如下位置,添加红线部分的内容,路径就是PHPMailer存放的位置:

保存,重启apache。

举一个phpmailer发信的例子。

1、邮件发送页
 

代码示例:
<html>
<body>
<h3>phpmailer邮件发送测试-www.</h3>
请你输入<font color="#FF6666">收信</font>的邮箱地址:
<form name="phpmailer" action="/blog_article/send.html" method="post">
<input type="hidden" name="submitted" value="1"/>
邮箱地址: <input type="text" size="50" name="address" />
<br/>
<input type="submit" value="发送"/>
</form>
</body>
</html>

2、发邮件程序 send.php
 

代码示例:

<?php
/**
* PHPMailer邮件发送
* Edit www.
*/
require("class.phpmailer.php");
$mail = new PHPMailer();
$mail->CharSet = "gb2312"; // 这里指定字符集!如果是utf-8则将gb2312修改为utf-8
$mail->Encoding = "base64";
$address = $_POST['address'];
$mail->IsSMTP(); // set mailer to use SMTP
$mail->Host = "smtp.126.com"; // specify main and backup server
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username = ""; // SMTP username
$mail->Password = "******"; // SMTP password

$mail->From = "";
$mail->FromName = "rokaye";
$mail->AddAddress("$address", "");
//$mail->AddAddress(""); // name is optional
//$mail->AddReplyTo("", "");

//$mail->WordWrap = 50; // set word wrap to 50 characters
//$mail->AddAttachment("/var/tmp/file.tar.gz"); // add attachments
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg"); // optional name
//$mail->IsHTML(true); // set email format to HTML

$mail->Subject = "PHPMailer测试邮件";
$mail->Body = "Hello,这是rokaye的测试邮件";
$mail->AltBody = "This is the body in plain text for non-HTML mail clients";

if(!$mail->Send())
{
echo "Message could not be sent. <p>";
echo "Mailer Error: " . $mail->ErrorInfo;
exit;
}

echo "Message has been sent";
?>

有关乱码的问题,多是因为没有指定所要求的编码而引起的。
 

代码示例:
$mail->CharSet = "gb2312"; // 指定字符集!如果是utf-8则将gb2312修改为utf-8
$mail->Encoding = "base64";
 

这样操作后,就不会出现乱码了。
 

您可能感兴趣的文章:
PHPMailer发送邮件的实例分享
phpmailer发送gmail邮件的例子
phpmailer发送网易126邮箱的例子
phpmailer发送yahoo邮件的例子
phpmailer类实现邮件群发的实例代码
PHPMailer发送邮件代码实例(ubuntu系统)
PHPMailer发送带附件邮件的例子
PHPMailer收发邮件标题、发件人、内容乱码问题的终极解决方法
PHPMailer发送邮件中文附件名乱码的解决办法
PHPMailer邮件标题中文乱码的解决方法
PHPMailer邮件类发送邮件举例(163邮箱)
phpmailer 发送邮件中文乱码问题的解决方法总结
phpmailer发送邮件及实现密码找回功能的代码
PHPmailer邮件群发的入门例子
PHPmailer 邮件群发的范例参考
phpmailer发邮件中文乱码问题如何解决
phpmailer 类发送邮件乱码解决方法
PHPMailer批量发送邮件的实例代码
有关phpmailer的用法
php使用phpMailer发送邮件的例子
phpmailer实现的简单openvpn用户认证的代码
PHPMailer 中文使用说明
phpmailer发送邮件的例子


    
[3]PHPMailer发送邮件中文附件名乱码的解决办法
    来源: 互联网  发布时间: 2013-12-24

假如使用PHPMailer类要发送的附件是“测试.txt”,如果在添加附件的时候强制使用指定文件名的方式:
 

代码示例:
$mail->AddAttachment($attach, $attach);
 

发送过去的附件文件名将会是乱码,如果不指定:
 

代码示例:
$mail->AddAttachment($attach, $attach);
 

发送过去的文件名中的中文直接没有了,变成了“.txt”。

解决办法一

打开class.phpmailer.php,在大概第1007行左右,函数AddAttachment中,有一句:
 

代码示例:
//$filename = basename($path);
if (false === strpos($path, ‘/’))
$filename = $this->EncodeHeader($path);
else
$filename = $this->EncodeHeader(substr($path, strrpos($path, ‘/’) + 1));

解决办法二

如果想设置文件名为中文,则在调用AddAttachment时提供中文的name参数(第二个参数)。
比如
 

代码示例:
$mail->AddAttachment(‘temp/2011/test.rar’, ‘测试.rar’);

其它问题:发送中文邮件的时候,中文会出现乱码

乱码的产生大概是在将邮件标题转成几个小的=?utf-8?B?...?=时,可能是无意中把中文给截断了产生的,修改第1185行:
 

代码示例:
$maxlen = 75 - 7 - strlen($this->CharSet);
 

改成:
 

代码示例:
$maxlen = 75000 - 7 - strlen($this->CharSet);

附,PHPMailer邮件发送类V5.1下载地址。
 

您可能感兴趣的文章:
PHPMailer发送邮件的实例分享
phpmailer发送gmail邮件的例子
phpmailer发送网易126邮箱的例子
phpmailer发送yahoo邮件的例子
phpmailer类实现邮件群发的实例代码
PHPMailer发送邮件代码实例(ubuntu系统)
PHPMailer发送带附件邮件的例子
PHPMailer收发邮件标题、发件人、内容乱码问题的终极解决方法
PHPmailer发送邮件及乱码问题的解决
PHPMailer邮件标题中文乱码的解决方法
PHPMailer邮件类发送邮件举例(163邮箱)
phpmailer 发送邮件中文乱码问题的解决方法总结
phpmailer发送邮件及实现密码找回功能的代码
PHPmailer邮件群发的入门例子
PHPmailer 邮件群发的范例参考
phpmailer发邮件中文乱码问题如何解决
phpmailer 类发送邮件乱码解决方法
PHPMailer批量发送邮件的实例代码
有关phpmailer的用法
php使用phpMailer发送邮件的例子
phpmailer实现的简单openvpn用户认证的代码
PHPMailer 中文使用说明
phpmailer发送邮件的例子


    
最新技术文章:
▪PHP函数microtime()时间戳的定义与用法
▪PHP单一入口之apache配置内容
▪PHP数组排序方法总结(收藏)
▪php数组排序方法大全(脚本学堂整理奉献)
▪php数组排序的几个函数(附实例)
▪php二维数组排序(实例)
▪php根据键值对二维数组排序的小例子
▪php验证码(附截图)
▪php数组长度的获取方法(三个实例)
▪php获取数组长度的方法举例
▪判断php数组维度(php数组长度)的方法
▪php获取图片的exif信息的示例代码
▪PHP 数组key长度对性能的影响实例分析
▪php函数指定默认值的方法示例
▪php提交表单到当前页面、提交表单后页面重定...
▪php四舍五入的三种实现方法
▪php获得数组长度(元素个数)的方法
▪php日期函数的简单示例代码
▪php数学函数的简单示例代码
▪php字符串函数的简单示例代码
▪php文件下载代码(多浏览器兼容、支持中文文...
▪php实现文件下载、支持中文文件名的示例代码...
▪php文件下载(防止中文文件名乱码)的示例代码
▪解决PHP文件下载时中文文件名乱码的问题
▪php数组去重(一维、二维数组去重)的简单示例
▪php小数点后取两位的三种实现方法
▪php Redis 队列服务的简单示例
▪PHP导出excel时数字变为科学计数的解决方法
▪PHP数组根据值获取Key的简单示例
▪php数组去重的函数代码示例
 


站内导航:


特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

©2012-2021,,E-mail:www_#163.com(请将#改为@)

浙ICP备11055608号-3