php发送邮件变量乱码,PHP发送邮件出现乱码的解决办法

在工作中遇到的一些问题,拿出来给大家分享一下!这只是我所遇到的问题的解决方案,此方法也许不能解决所有的问题,当然还得具体问题具体分析了!

邮件主题的乱码解决:

例如:邮件的主题用变量$subject,在取得到的主题后加上下面一句,这样标题乱码就解决了

$subject = "=?GB2312?B?".base64_encode($subject)."?=";

邮件内容的乱码解决:

并且在发送邮件的类文件smtpfunction.php中,在定义发送邮件的函数sendmail修改如下:

function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $additional_headers = "")

{

$mail_from = $this->get_address($this->strip_comment($from));

$body = ereg_replace("(^|(\r\n))(\.)", "\1.\3", $body);

$header .= "MIME-Version:1.0\r\n";

if($mailtype=="HTML"){

$header .= "Content-Type:text/html; charset=gb2312 \r\n";//这里的gb2312设置一下

}

$header .= "To: ".$to."\r\n";

if ($cc != "") {

$header .= "Cc: ".$cc."\r\n";

}

$header .= "From: $from\r\n";

$header .= "Subject: ".$subject."\r\n";

$header .= $additional_headers;

$header .= "Date: ".date("r")."\r\n";

//$header .= "X-Mailer:By Redhat (PHP/".phpversion().")\r\n";

$header .= "X-Mailer:By Microsoft Outlook Express 5.00.2615.200\r\n";

list($msec, $sec) = explode(" ", microtime());

$header .= "Message-ID: \r\n";

$TO = explode(",", $this->strip_comment($to));

if ($cc != "") {

$TO = array_merge($TO, explode(",", $this->strip_comment($cc)));

}

if ($bcc != "") {

$TO = array_merge($TO, explode(",", $this->strip_comment($bcc)));

}

$sent = TRUE;

foreach ($TO as $rcpt_to) {

$rcpt_to = $this->get_address($rcpt_to);

if (!$this->smtp_sockopen($rcpt_to)) {

$this->log_write("Error: Cannot send email to ".$rcpt_to."\n");

$sent = FALSE;

continue;

}

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值