14

我想创建一个 html 电子邮件,并且我已经阅读了很多关于如何做到这一点的内容。有一条信息我找不到。我应该如何声明 mime 类型?我试过:

meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

但它不起作用。

稍后编辑:
我正在尝试将邮件的内容类型设置为,text/html但我不知道如何。所有这些都是从普通电子邮件客户端编写的。我必须在邮件正文中声明吗?或者在邮件标题中(如果是这样,我该怎么做?)?

4

4 回答 4

37

您是否尝试在发送到邮件服务器的消息头中设置内容类型声明?如果是这样,您应该以这种方式设置它,在一行中:

Content-Type: text/html; charset=UTF-8
于 2009-11-03T10:27:38.807 回答
5

元标记的结束标记仅用于xhtml/xml. 如果您使用的是 html,则应在<head>以下标签中使用它:

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
于 2017-01-02T09:26:35.943 回答
4

基本上,电子邮件客户端会忽略其中包含内容类型的任何 META 标签(至少截至 2013-10-17)。

您需要在电子邮件服务器的特殊标头中设置内容类型声明。

有关此问题的更多信息,请访问 http://www.emailonacid.com/blog/details/C13/the_importance_of_content-type_character_encoding_in_html_emails

如果这对您没有意义,那么恐怕您不走运。我发现的唯一可靠的解决方案是将任何特殊字符转换为其等效的 HTML 实体。上面的链接有一个指向为您执行此操作的工具的链接。

希望有帮助!

于 2013-10-17T14:09:27.897 回答
2

这适用于 php:

// To send HTML mail, the Content-type header must be set
$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=iso-8859-1';

// Additional headers
$headers[] = 'To: Mary <mary@example.com>, Kelly <kelly@example.com>';
$headers[] = 'From: Birthday Reminder <birthday@example.com>';
$headers[] = 'Cc: birthdayarchive@example.com';
$headers[] = 'Bcc: birthdaycheck@example.com';

// Mail it
mail($to, $subject, $message, implode("\r\n", $headers));

http://php.net/manual/en/function.mail.php#example-4180

于 2019-02-19T08:34:27.977 回答