phpmailer可以让PHP新手在简单的配置下以复杂的socket方式发送邮件,所以应用还是相当广泛的。
不过,有个烦人的地方,老外写的代码,可能没有顾及到国人,所以发送中文邮件时会乱码。
以下便是解决phpmailer发件中文乱码问题的一些总结了。
1:打开phpmailer 核心文件 class.phpmailer.php , 将 public $CharSet = 'iso-8859-1'; 改为 public $CharSet = 'UTF-8';
至于为什么要将'iso-8859-1'改为‘UTF-8’,请google或百度一下'iso-8859-1'就清楚。
2:设置邮件的编码;
相信有不少朋友是设置成"GBK"或“GB2312”的,我开始也是,后来了解到Mail是国际化的,如果想在像Gmail等那样的国际化邮箱正确显示中文,请将编码设置为“UTF-8”;
3,:设置标题编码;
这里可能有人会问,都设置了邮件的编码了,还设置标题编码做什么。
如果您测试过多种邮箱,你会发现标题中文是乱码的,没错,即使您设置了 $mail->Charset="UTF-8";
既然学习php应该多看看php手册或留意php.net ,标题乱码的解决办法我是在php官网找到答案的 hhtp://.www.php.net/mail。
$mail->Subject ="信件标题"; 改为 $mail->Subject = "=?utf-8?B?" . base64_encode("信件标题") . "?=";
“设计此种编码是为了使二进制数据可以通过非纯 8-bit 的传输层传输,例如电子邮件的主体。”(来自php手册 base64_encode() )
这样,标题的中文乱码也就解决了。
#---------------------
附,phpmailer发送邮件中文乱码的问题
phpmailer在默认情况下发出去的邮件可能会出现乱码。
网上给出解决方案:增加一行
经过测试,此方法对于163可用,可是QQ邮箱就会变成乱码,而QQ邮箱在默认的情况下是没有问题的。
正确的做法:
中文还是用GB2312的好点。
只测试过QQ,163其它的没有测试。
2012-11-5更新:
$mail->CharSet这个方法应该设置的编码是要跟你引用phpmailer类的页面的编码一至的,比方在1.php里面引用该类发送邮件,则需要设置为1.php这个文件的编码类型,如何查看文件的编码,这个问题就不要问了。当然,外部引用的内容最好也要统一文件编码。
就是这些了,希望以上的内容可以帮助大家解决phpmailer中文邮件发送乱码的问题。
,祝大家学习愉快。
您可能感兴趣的文章:
PHPMailer发送邮件的实例分享
phpmailer发送gmail邮件的例子
phpmailer发送网易126邮箱的例子
phpmailer发送yahoo邮件的例子
phpmailer类实现邮件群发的实例代码
PHPMailer发送邮件代码实例(ubuntu系统)
PHPMailer发送带附件邮件的例子
PHPMailer收发邮件标题、发件人、内容乱码问题的终极解决方法
PHPmailer发送邮件及乱码问题的解决
PHPMailer发送邮件中文附件名乱码的解决办法
PHPMailer邮件标题中文乱码的解决方法
PHPMailer邮件类发送邮件举例(163邮箱)
phpmailer发送邮件及实现密码找回功能的代码
PHPmailer邮件群发的入门例子
PHPmailer 邮件群发的范例参考
phpmailer发邮件中文乱码问题如何解决
phpmailer 类发送邮件乱码解决方法
PHPMailer批量发送邮件的实例代码
有关phpmailer的用法
php使用phpMailer发送邮件的例子
phpmailer实现的简单openvpn用户认证的代码
PHPMailer 中文使用说明
phpmailer发送邮件的例子
实现如下功能:
1、根据邮件找回链接进入重置密码操作页面 。仅一周内、一次有效
2、重置密码 (也可以将密码发送直接登录)
1、生成邮件找回邮件
<?php
$subject = " 重设密码(请勿回复此邮件)";
$auth = authcode($use_id . $account . $email, 'ENCODE', 'safeEmail', 3600 * 24 * 7);
$url = "http://" . $_SERVER["HTTP_HOST"] . "/Main.php?do=userManage&method=ResetPass&u=" . $use_id . "&auth=" . $auth;
$body = " 尊敬的用户: <br>
您好!<br>
根据您于 [" . date('Y-m-d H:m:s') . "] 提交的请求,本邮件将引导您重新设置 [" . $account . "] 的帐号密码。
如果您确认本次“重新设置密码”的请求是您自己提交的,<a href='" . $url . "'>请点这里完成重设操作</a>(本链接仅一周内、一次有效 )。
如果上面的链接无法点击,您也可以复制以下链接,粘贴到您浏览器的地址栏内,然后按“回车”键打开重设机密问题页面设置新的机密问题和答案:
{$url}
如果您在以上时间点没有提交过“重新设置密码”的请求,则有可能是您机密问题的答案已经泄露,有恶意用户正在试图窃取您的帐号!";
sendMail($subject, $body, $address);
function sendMail($subject, $body, $address) {
$mail = new PHPMailer();
$mail->CharSet ='utf-8';
$mail->IsHTML(true); // 设置邮件格式为 HTML
$mail->IsSendmail(); //使用LINUX SENDMAIL发送邮件
$mail->Host = WEB_SITE_HOST; // specify main and backup server
$mail->SMTPAuth = true; // 设置为安全验证方式
$mail->SetLanguage('en',PATH_CLASS.'/phpmailer/language/');
$mail->From = MAIL_SENDER;
$mail->FromName = "service";
$mail->AddAddress($address); //收件人地址
$mail->WordWrap = 50; // set word wrap to 50 characters
$mail->Subject = $subject;
$mail->Body = daddslashes()($body, 1);
$result = $mail->Send();
if (!$result) {
echo $mail->ErrorInfo;
}
$mail->SmtpClose();
return $result;
}
//邮件链接有效性检查
function ResetPass($mapping, $form, &$request, &$response) {
$use_id = $request->getParameter('u');
$user = $this->delegate->getUserInfo_ById($use_id);
$o_mail = $user['email'];
$o_account = $user['account'];
$auth = $request->getParameter('auth');
$auth = authcode($auth, 'DECODE', 'safeEmail');
$n_auth = $use_id . $o_account . $o_mail;
$a = false;
if ($n_auth == $auth) {
$a = true;
}
$form->setEditUser($user);
if ($a) { //有效
return $mapping->findForwardConfig('resetpwd');
}
}
?>
class.phpmailer.php line 332 递归调用,群发邮件
<?php
public function AddMutieAddress($arrAddress){
if (is_array($arrAddress)){
foreach($arrAddress as $key=>$value){
$this->AddMutieAddress($value);
}
}else{
$this->AddAddress($arrAddress);
}
}
?>
首先用得是gmail失败了 SMTPSecure=ssl。
phpmailer发送html样式丢失的解决:
不能用带路径的样式<link href="/blog_article/style/style.css" rel="stylesheet" type="text/css" />用<style><style>来定义的
直接在表格里面定义样式发送就正常了<td >把对应的class换成style代码
<?php
require("class.phpmailer.php");
$mail = new PHPMailer(); //建立邮件发送类
$address = "mail1@";
$mail->IsSMTP(); // 使用SMTP方式发送
$mail->Host = "smtp.qq.com"; // 发送邮件服务器
$mail->SMTPAuth = true; // 启用SMTP验证功能
$mail->Username = "mail2@qq.com"; // 用户名(请填写完整的email地址)
$mail->Password = "***********"; // 密码
$mail->Port = 25;
$mail->From = "mail2@qq.com"; //邮件发送者email地址
$mail->FromName = "liuyoubin";
//$mail->SMTPSecure = "ssl"; // 安全协议tls
$mail->AddAddress("$address", "a"); //收件人地址,格式是AddAddress("收件人email","收件人姓名")
//$mail->AddReplyTo("", "");
//$mail->AddAttachment("/var/tmp/file.tar.gz"); // 添加附件
//$mail->IsHTML(true); // set email format to HTML //是否使用HTML格式
$mail->Subject = "PHPMailer测试邮件"; //邮件标题
$mail->Body = "Hello,这是测试邮件"; //邮件内容
$mail->AltBody = "This is the body in plain text for non-HTML mail clients"; //附加信息,可以省略
if (!$mail->Send()) {
echo "邮件发送失败. <p>";
echo "错误原因: " . $mail->ErrorInfo;
exit;
}
echo "邮件发送成功";
?>
附,PHPMailer邮件发送类V5.1下载地址。
您可能感兴趣的文章:
PHPMailer发送邮件的实例分享
phpmailer发送gmail邮件的例子
phpmailer发送网易126邮箱的例子
phpmailer发送yahoo邮件的例子
phpmailer类实现邮件群发的实例代码
PHPMailer发送邮件代码实例(ubuntu系统)
PHPMailer发送带附件邮件的例子
PHPMailer收发邮件标题、发件人、内容乱码问题的终极解决方法
PHPmailer发送邮件及乱码问题的解决
PHPMailer发送邮件中文附件名乱码的解决办法
PHPMailer邮件标题中文乱码的解决方法
PHPMailer邮件类发送邮件举例(163邮箱)
phpmailer 发送邮件中文乱码问题的解决方法总结
PHPmailer邮件群发的入门例子
PHPmailer 邮件群发的范例参考
phpmailer发邮件中文乱码问题如何解决
phpmailer 类发送邮件乱码解决方法
PHPMailer批量发送邮件的实例代码
有关phpmailer的用法
php使用phpMailer发送邮件的例子
phpmailer实现的简单openvpn用户认证的代码
PHPMailer 中文使用说明
phpmailer发送邮件的例子
1、创建smtp_mail函数 phpmai.php
<?php
/**
* PHPMailer群发邮件的例子
* Edit www.
*/
require("PHPMailer/class.phpmailer.php");//调用phpmailer
function smtp_mail ($sendto_email, $subject, $body, $extra_hdrs, $user_name,$host,$mailname,$mailpass,$text,$mail_table) {
$mail = new PHPMailer();
$mail->IsSMTP(); // send via SMTP
$mail->Host = $host; // SMTP servers
$mail->SMTPAuth = true; // turn on SMTP authentication
$mail->Username =$mailname; // SMTP username 注意:普通邮件认证不需要加 @域名
$mail->Password =$mailpass; // SMTP password
$mail->From = $mailname; // 发件人邮箱
$mail->FromName = "wangkan"; // 发件人
$mail->CharSet = "gb2312"; // 这里指定字符集!
$mail->Encoding = "base64";
$mail->AddAddress($sendto_email,"hello"); // 收件人邮箱和姓名
//$mail->AddBCC("邮箱", "ff");
//$mail->AddBCC("邮箱", "ff");这些可以暗送
//$mail->AddReplyTo("test@","aaa.com");
//$mail->WordWrap = 50; // set word wrap
//$mail->AddAttachment("/qita/htestv2.rar"); // 附件
//$mail->AddAttachment("/tmp/image.jpg", "new.jpg");
$mail->IsHTML(true); // send as HTML
// 邮件主题
$mail->Subject = $subject;
// 邮件内容
$mail->Body =$text;
$mail->AltBody ="text/html";
if(!$mail->Send())
{
$error=$mail->ErrorInfo;
/*if($error=="smtpnot")//自定义错误,没有连接到smtp,掉包的情况,出现这种情况可以重新发送
{
sleep(2);
$song=explode()("@",$sendto_email);
$img="<img height='0' width='0' src='http://www./email.php?act=img&mail=".$sendto_email."&table=".$mail_table."' />";
smtp_mail($sendto_email,"发送".$song[0].$biaoti, 'NULL', 'abc',$sendto_email,$host,$mailname,$mailpass,
$img."发送".$song[0].$con,'$mail_table');//发送邮件
}*/
$sql="insert into error(error_name,error_mail,error_smtp,error_time,error_table) values('$error','$sendto_email','$mailname',now(),'$mail_table')";
$query=mysql_query()($sql);//发送失败把错误记录保存下来
}
else {
if($mailname=="aaa@")
{
echo "<script type='text/javascript'>alert('".$user_name."邮件发送成功!请查收邮箱点击确认!');window.close();</script>"; //个人需求,可以去掉
}
else
{
echo "$user_name 邮件发送成功!请查收邮箱确认!<br />";//发送成功
}
}
}
?>
2、邮件发送页 send.php
<?php
include("phpmail.php");
sleep(3);
smtp_mail($mail,"发送".$song[0].$biaoti, 'NULL', 'abc',$mail,$host,$mailname,$mailpass,$img."发送".$song[0].$con,$mail_table);//发送邮件
/*$upsql="update zhuangtai set jlid='$row[0]',zhuangtai=1,biaoti='$biaoti' where biao='$mail_table'";
$upquery=mysql_query($upsql);*///保存发送状态,可以去掉
?>
附,PHPMailer邮件发送类V5.1版下载地址。
您可能感兴趣的文章:
PHPMailer发送邮件的实例分享
phpmailer发送gmail邮件的例子
phpmailer发送网易126邮箱的例子
phpmailer发送yahoo邮件的例子
phpmailer类实现邮件群发的实例代码
PHPMailer发送邮件代码实例(ubuntu系统)
PHPMailer发送带附件邮件的例子
PHPMailer收发邮件标题、发件人、内容乱码问题的终极解决方法
PHPmailer发送邮件及乱码问题的解决
PHPMailer发送邮件中文附件名乱码的解决办法
PHPMailer邮件标题中文乱码的解决方法
PHPMailer邮件类发送邮件举例(163邮箱)
phpmailer 发送邮件中文乱码问题的解决方法总结
phpmailer发送邮件及实现密码找回功能的代码
PHPmailer 邮件群发的范例参考
phpmailer发邮件中文乱码问题如何解决
phpmailer 类发送邮件乱码解决方法
PHPMailer批量发送邮件的实例代码
有关phpmailer的用法
php使用phpMailer发送邮件的例子
phpmailer实现的简单openvpn用户认证的代码
PHPMailer 中文使用说明
使用phpmailer发送邮件的例子