因为网站是支持多种语言的,所以我的编码选用了UTF-8;但是在我用JMAIL发送的时候却出现了乱码。参照网上的一些文章对代码进行了修改,其他的都还OK,就是标题后面附带了一长串字符,就像这样子
留言测试X-CM-TRANSID: C8CowLCr1IDQxNBJKnvfMg--.29078S2请大家看看是不是我的代码那里出错了: $jmail = new COM('JMail.Message') or die('无法调用Jmail组件');
$jmail->silent = true;
$jmail->charset = 'utf-8';
$jmail->contentType = 'text/html';
$jmail->ContentTransferEncoding = 'utf-8';
$jmail->Encoding = 'utf-8';
$jmail->ISOEncodeHeaders = false;
留言测试X-CM-TRANSID: C8CowLCr1IDQxNBJKnvfMg--.29078S2请大家看看是不是我的代码那里出错了: $jmail = new COM('JMail.Message') or die('无法调用Jmail组件');
$jmail->silent = true;
$jmail->charset = 'utf-8';
$jmail->contentType = 'text/html';
$jmail->ContentTransferEncoding = 'utf-8';
$jmail->Encoding = 'utf-8';
$jmail->ISOEncodeHeaders = false;
@header("content-Type: text/html; charset=utf-8");
再加个meta
<meta http-equiv="content-type" content="html/text; charset=utf-8" />
header("content-type:text/html; charset=gb2312");$jmail = new COM('JMail.Message') or die('无法调用Jmail组件');
$jmail->silent = true;
$jmail->charset = 'gb2312';
$jmail->contentType = 'text/html';
$jmail->From = '[email protected]';
$jmail->FromName = '测试邮件';$jmail->Encoding = 'base64';
$jmail->ContentTransferEncoding = 'base64';
$jmail->ISOEncodeHeaders = true;$jmail->AddRecipient('[email protected]');
$jmail->Subject = '标题abc标题abc';
$jmail->Body = '正文english正文english';
$jmail->MailServerUserName = '[email protected]';
$jmail->MailServerPassword = 'password';try{
$email = $jmail->Send('smtp.163.com');
if($email) echo '发送成功';
else echo '发送失败';
} catch (Exception $e){
echo $e->getMessage();
}
?>
======================== 问题一 ========================
收到的邮件格式如下:
标题:标题abc标题abc
正文:正文english正文english n正文里面无缘无故多了一个n出来!把正文内容换成别的再试,后面还是会多出一些字符来。======================== 问题二 ========================
我在代码里面明明已经将Encoding和ContentTransferEncoding设为base64了,可是用OUTLOOK查看邮件头信息的时候发现里面用的还是QP格式!
----------------------------------------------------
Subject: =?gb2312?Q?=B1=EA=CC=E2abc=B1=EA=CC=E2abc=00t=00=00?=
----------------------------------------------------希望大家帮帮忙,谢谢!