Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/email/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 发送带有国际口音和特殊字符的电子邮件_Php_Email_Utf 8_Internationalization - Fatal编程技术网

Php 发送带有国际口音和特殊字符的电子邮件

Php 发送带有国际口音和特殊字符的电子邮件,php,email,utf-8,internationalization,Php,Email,Utf 8,Internationalization,我正在通过PHP mail()发送一份西班牙语时事通讯,它们带有重音和特殊字符(我将尝试在这里粘贴:á,í,é,ñ…) 对于电子邮件的HTML版本,我想我通过打印á,和#233 但是对于纯文本版本,我想我不能把它们放进去,对吗 对于HTML和纯文本版本,最好的做法是什么? 后来,我可能不得不用更复杂的语言发送电子邮件,如希伯来语或汉语 谢谢 对于大多数默认浏览器编码设置,重音字符如á、í、é、ñ在纯文本上工作 像汉字这样的亚洲人通常会变成垃圾 是的,建议使用纯文本+HTML。如果您的电子

我正在通过PHP mail()发送一份西班牙语时事通讯,它们带有重音和特殊字符(我将尝试在这里粘贴:á,í,é,ñ…)

对于电子邮件的HTML版本,我想我通过打印
á
和#233

但是对于纯文本版本,我想我不能把它们放进去,对吗

对于HTML和纯文本版本,最好的做法是什么? 后来,我可能不得不用更复杂的语言发送电子邮件,如希伯来语或汉语


谢谢

对于大多数默认浏览器编码设置,重音字符如á、í、é、ñ在纯文本上工作

像汉字这样的亚洲人通常会变成垃圾


是的,建议使用纯文本+HTML。

如果您的电子邮件内容编码为UTF-8,并且您以UTF-8发送电子邮件,那么您不必在HTML或文本部分使用任何国际字符的特殊处理。

您需要使用MIME。添加邮件标题:

MIME-Version: 1.0
Content-Type: text/plain;charset=utf-8
(如果您已经在使用MIME
multipart/alternative
将HTML和文本放在同一封邮件中,则可以将
内容类型:text/plain;charset=utf-8
放在文本部分的子标题上。)

这是假设您将要发送的“国际”字符的编码是UTF-8。如果您希望满足多个国家的需求,UTF-8是整个应用程序中使用的唯一合理的编码选择,但是如果您还没有真正考虑到这一点,那么您的站点可能会默认使用西欧编码。在邮件中担心汉字之前,先检查一下你的网站和数据库中的汉字是否正常工作

脱轨:在某些地区,用UTF-8发送邮件不是最有效的。我不知道中国的情况,但在日本仍然有一些落后和荒谬的邮件系统(尤其是webmail),它们无法处理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
此格式的编码函数为。然而,您确实需要一个合理的最新PHP来获得该函数;如果没有,可以将
内容传输编码设置为
base64
,然后使用

最后,如果要在标题中包含非ASCII字符(例如在
From
to
Subject
中),则有一种完全不同的语法:

Subject: =?utf-8?b?QW4gYS1hY3V0ZSBpcyDDoQ==?=

<<>代码> qw…=代码>中间是UTF-8中的“A- Acth-IsA.”的<代码> Base64编码E/CODE > < /P>我如何确保我的电子邮件被发送为UTF-8?“完全不同的语法”是RCF2047’B编码。通常情况下,最好使用来自同一RFC的“Q”编码,因为它通常更可读(更像引用的可打印)且更短。PHPMailer同时处理这两个问题,并且通常是一种比从头开始整理编码更好的方法——这就是库的用途!