PHP mail函数发送HTML邮件可使用中文发件人和自定
日期:2014-07-13 / 人气: / 来源:网络
怎样发送HTML格式邮件
主题给填上中文怎么是乱码啊!
收件人中除了填上收件人的邮件,还要填上名字,而且还是中文的
发件人要填上网站的名字,让人收到邮件的时候不是光秃秃的显示邮件地址,那太搓了,就像下面这张图
闲话不再说了,直接上代码,相信都能看懂的。
// 对邮件地址进行中文的UTF-8编码转化function format_mail_address($address){
if(preg_match("|<([^<] )>|", $address, $matches)){
$name = mb_substr($address, 0, strpos($address, '<'));
$name = trim($name);
$mail = $matches[1];
$address = "=?UTF-8?B?".base64_encode($name)."?= " . "<$mail>";
}
return $address;
}
// 发送html格式的邮件
function html_mail($from, $to, $subject, $body){
if(preg_match("|<([^<] )>|", $from, $matches)){
$from_name = mb_substr($from, 0, strpos($from, '<'));
$from_mail = $matches[1];
$from = "=?UTF-8?B?".base64_encode($from_name)."?= " . "<$from_mail>";
}else{
$from_mail = $from;
}
$headers[] = "From: $from";
$headers[] = "X-Mailer: PHP";
$headers[] = "MIME-Version: 1.0";
$headers[] = "Content-type: text/html; charset=utf8";
$headers[] = "Reply-To: $from_mail";
$subject = "=?UTF-8?B?".base64_encode($subject)."?=";
if(is_array($to)){
foreach($to as $mail)
$to_mails[] = format_mail_address($mail);
$to = join(", ", $to_mails);
}
mail($to, $subject, $body, join("rn", $headers), "-f $from_mail");
}
函数使用可以参照下面的例子:
html_mail("老谷自言自语 <admin@yorkgu.me>",
array(
"用户A <user1@gmail.com>",
"用户B <user2@163.com>"),
"这是一封测试邮件",
"<html><body><h1 style='color:red'>
感谢党,感谢政府,感谢大中华局域网,给我这个发送邮件的机会。
</h1></body></html>"
);
PHP mail函数调用sendmail发送邮件,请尽量在linux系统中尝试以上代码
注意:以上代码运行可能存在国内邮箱中收不到的情况,因为可能包含敏感词汇。
如我的测试中,gmail收到邮件并置于垃圾邮箱中,而163没有收到。
CentOS系统使用Sendmail架设邮件服务器
导读:使用 Sendmail 在 CentOS 5.5 架设邮件服务器 假如你要架设一个有会员管理的网站,可能会遇到诸如“我忘记密码了”、“你有一年没来过了,有空过来瞧瞧吧”这类的问题,一般这类问题都是使用邮件解决的,比如发送一个重置密码的链接或者发送一封提醒邮件。
MySQL数据库,
作者:管理员
推荐内容 Recommended
- 江苏飞浩信息科技期待您的加入07-20
- 江苏飞浩科技欢迎您07-19
相关内容 Related
- 江苏飞浩信息科技期待您的加入07-20
- 江苏飞浩科技欢迎您07-19