Nat*_*n H 6 php email utf-8 internationalization
我通过西班牙语的PHP mail()发送简报,他们有重音和特殊字符(我将尝试粘贴在这里:á,í,é,ñ...).
对于电子邮件的HTML版本,我想我通过打印解决了这个问题á,é......
但是对于纯文本版本,我假设我不能放那些,对吧?
对于HTML和纯文本版本,最好的做法是什么?之后,我可能不得不用更复杂的语言发送电子邮件,例如希伯来语或中文...
谢谢!
bob*_*nce 24
您需要使用MIME.添加邮件标题:
MIME-Version: 1.0
Content-Type: text/plain;charset=utf-8
Run Code Online (Sandbox Code Playgroud)
(如果您已经使用MIME multipart/alternative将HTML和文本放在同一邮件中,Content-Type: text/plain;charset=utf-8则将文本部分放在子标题上.)
这假设你要发送"国际"字符的编码是UTF-8.如果您希望迎合多个国家/地区,UTF-8是您在整个应用程序中使用的唯一合理的编码选择,但如果您还没有真正考虑过这一点,那么您的网站可能会默认为西欧编码.检查中文字符之类的内容在您的站点和数据库中是否正常工作,然后再在邮件中担心它们.
出轨:有些地方用UTF-8发送邮件不是最有效的.我不了解中国,但在日本仍有一些倒退和荒谬的邮件系统(尤其是网络邮件)无法应对Unicode,必须给出一个特定于语言环境的编码,如Shift-JIS.如果您专注于这些市场,您通常最终将不得不使用它iconv来创建特殊编码的邮件版本.不愉快.
现在,由于许多邮件服务器无法处理邮件正文中的非ASCII字符,因此您必须对它们进行编码.您可以为此选择quoted-printable或base64; 对于包含ASCII字符的内容,quoted-printable通常更小,更易读:
Content-Type: text/plain;charset=utf-8
Content-Transfer-Encoding: quoted-printable
Hello! An a-acute is =C3=A1
Run Code Online (Sandbox Code Playgroud)
以这种格式编码的函数是quoted_printable_encode.但是,您确实需要一个合理的最新PHP才能获得该功能; 如果你没有它,你可以设置Content-Transfer-Encoding为base64而使用base64_encode.
最后,如果你想在头非ASCII字符(例如From,To或Subject),有一个完全不同的语法:
Subject: =?utf-8?b?QW4gYS1hY3V0ZSBpcyDDoQ==?=
Run Code Online (Sandbox Code Playgroud)
QW...==中间那个混乱的地方是base64_encodeUTF-8中的"an a-acuteisá".
| 归档时间: |
|
| 查看次数: |
18135 次 |
| 最近记录: |