海
我在php中有一个西班牙语网站。在这个邮件正文中包含一个主题“Solicituddecotización”,但主题出现在像Solicituddecotización这样的热门邮箱中。但它在邮件部分显得正确。我如何避免这个问题。有人知道吗?
答案 0 :(得分:6)
海! =)要对主题进行编码,您必须执行此操作:
$subject = 'Solicitud de cotización';
// =?UTF-8?B?U29saWNpdHVkIGRlIGNvdGl6YWNpw7Nu?=
$subject = '=?UTF-8?B?' . base64_encode($subject) . '?=';
如果您使用的是PHP 5.3+,则可以使用quoted_printable_encode()
代替:
$subject = 'Solicitud de cotización';
// =?UTF-8?Q?Solicitud de cotizaci=C3=B3n?=
$subject = '=?UTF-8?Q?' . quoted_printable_encode($subject) . '?=';
答案 1 :(得分:4)
您需要使用您正在使用的任何文本编码对主题标题进行编码。请参阅http://metacpan.org/pod/Encode::MIME::Header和http://www.faqs.org/rfcs/rfc2047.html,了解相关内容。
基本上,您的主题行应如下所示:
主题:Solicitud de =?UTF-8?Q?cotizaci = C3 = B3n?=
然后,任何了解MIME的MUA都应使用正确的字符集正确呈现主题。
编辑:值得一提的是RFC2822将ASCII指定为邮件消息头的字符编码,这就是引用必要的原因。它还指定行不应超过72个字符,因此可能需要折叠,并且在生成要在RFC(2)822邮件系统中处理的消息时应考虑到这一点。最后,使用B编码对于你提供的字符串没有多大意义,因为Q编码占用的空间较少(就此而言,你只想引用一堆实际使用字符的单词在ASCII字符集之外)。
技术上可能只是对整个字符串使用B编码进行暴力破解,但由于浪费而一般说来形式不好,而且你更有可能超过硬RFC(2)822标准指定的单行中9,999个字符的限制,如果你有一个很长的主题行。
答案 2 :(得分:3)
我有同样的问题,现在它对我有用的方法是使用类(phpMailer):
<?php
require_once('class.phpmailer.php');
$mail = new PHPMailer(); // defaults to using php "mail()"
// Here's the code that allows special chars in subject and body
$mail->CharSet = 'UTF-8';
$mail->Encoding = 'quoted-printable';
// From and reply data
$mail->AddReplyTo('name@yourdomain.com', 'First Last');
$mail->SetFrom('name@yourdomain.com', 'First Last');
$mail->AddReplyTo('name@yourdomain.com', 'First Last');
// Receiver
$address = 'whoto@otherdomain.com';
$mail->AddAddress($address, 'John Doe');
// Message
$mail->Subject = 'PHPMailer Test Subject via mail(), basic';
$mail->Body = 'Message sent from website';
// Attachment(s)
$mail->AddAttachment('images/phpmailer.gif');
$mail->AddAttachment('images/phpmailer_mini.gif');
// Try to send mail
if( ! $mail->Send())
{
echo 'Mailer Error: ' . $mail->ErrorInfo;
}
else
{
echo 'Message sent!';
}
?>
答案 3 :(得分:-1)
尝试在电子邮件标题中设置charset
至utf-8
:
charset=UTF-8
或者看:
<强> UTF8 ready php mail function 强>
UTF8_mail(
“fromname <my@email.com>”,
“First Last <your@email.com>”,
“Solicitud de cotización”,
“Κείμενο Text”,
“”,
“Solicitud de cotización<hidden_friend@email.com>”
);