所以我们发送了一封来自outlook in accryllic的邮件到mail.ru,它显示了相同的内容没有问题,然后我将编码更改为windows-1251,再次显示在gmail中很好但在mail.ru(谁不有一个选项,我可以找到切换编码,不支持UTF-8)它显示为不同类型的gooblygook。
代码在这里:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=koi8-r" />
<title>Untitled Document</title>
</head>
//error_reporting(E_ALL);
error_reporting(E_STRICT);
date_default_timezone_set('America/Toronto');
require_once('PHPMailer_5.2.2/class.phpmailer.php');
//include("class.smtp.php"); // optional, gets called from within class.phpmailer.php if not already loaded
$mail = new PHPMailer();
$body = "Это письмо отправлено потому. This is english";
$mail->IsSMTP(); // telling the class to use SMTP
$mail->Host = "smtp.gmail.com"; // SMTP server
$mail->SMTPDebug = 1; // enables SMTP debug information (for testing)
// 1 = errors and messages
// 2 = messages only
$mail->SMTPAuth = true; // enable SMTP authentication
$mail->SMTPSecure = "ssl"; // sets the prefix to the servier
$mail->Host = "smtp.gmail.com"; // sets GMAIL as the SMTP server
$mail->Port = 465; // set the SMTP port for the GMAIL server
$mail->Username = "xxx@gmail.com"; // GMAIL username
$mail->Password = "xxx"; // GMAIL password
$mail->SetFrom('xxx@gmail.com', 'xxx');
$mail->AddReplyTo("xxx@gmail.com","xxx");
$mail->Subject = "Urgent";
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; // optional, comment out and test
$mail->MsgHTML($body);
$address1 = "xxx@mail.ru";
$address2 = "xxx@gmail.com";
if(!$mail->Send()) {
echo "Mailer Error: " . $mail->ErrorInfo;
} else {
echo "Message sent!";
}
当然有一种方法可以向mail.ru发送俄语消息,我显然做了一些愚蠢的事情,因为甚至从前景发送丙烯酸有效,但也许我必须将编码放在除了标题之外的其他地方。
我的计划是它会自动编码消息,但由于他们不支持UTF-8,我的新计划是显示一条消息“点击此处在网页中查看此消息”,然后我可以自己控制编码它会显示正常,但我甚至无法弄清楚如何将俄罗斯的消息发送到mail.ru因为它全部显示在gobblygook为win-1251,UTF-8甚至kio
答案 0 :(得分:1)
您在HTML标头中设置的字符集对稍后在同一脚本中运行的php代码具有绝对 NO 效果。 PHP不会关心客户端字符集,直到客户端将一些数据发送回php。您需要生成正确的MIME电子邮件,并在标题中设置正确的字符集。
我强烈建议使用PHPMailer或Swiftmailer,这两者都会使发送MIME电子邮件变得微不足道,并且比PHP mail()
函数的完全垃圾更容易,更可靠。
答案 1 :(得分:0)
您还可以添加:
$ MAIL-&GT; SetLanguage(&#34; RU&#34;&#34; PHPMailer的/语言&#34);
无论是否有效,但在我发现的俄语发送时强制执行。