0

我正在尝试使用 PHP 的 mail() 函数向我的网站成员发送电子邮件,

邮件是希伯来语的,我想发送一封 html 电子邮件,

我就是这样发送的

$mail_to = "Email@domain.com";
$message = "
<html>
some content here
</html>
";
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=windows-1255" . "\r\n";
$headers .= 'From: "MyWebsiteName" <support@domain.com>' . "\r\n";

$mail = mail($mail_to, $subject, $message, $headers );

它与 Gmail 或 Thunderbird 用户等客户端完全兼容,但我在其他一些不太有名但在我的国家仍然广泛使用的客户端中查看了它,它只是向我展示了 html 源.. 我'还将补充说,我在那些运行良好的客户端中看到了其他邮件,因此它们支持 html 邮件。

我究竟做错了什么?

编辑:

我查看了标题,很奇怪,这些是它们的标题:

MIME-version: 1.0
X-Mailer: aspNetEmail ver 4.0.0.6
Content-type: text/html; charset=UTF-8

Content-transfer-encoding: quoted-printable
SLNG_REVERSE_PATH: mail@domain.co.il
DT: 2
DB: 1
QueueCmd: 1
List-Unsubscribe: <mailto: mail@domain.co.il>
Original-recipient: rfc822;myemail@domain.com

这些是我的:

Message-id: <20120913143702.10413.qmail@www022.inter.co.il>
MIME-version: 1.0
Content-type: TEXT/PLAIN
Content-transfer-encoding: 8BIT
Original-recipient: rfc822;myemail@domain.com

Content-type:text/html;charset=windows-1255

就像他们出于某种原因将 TEXT/PLAIN 添加到我的,怎么会?

4

5 回答 5

2

编辑后:

您在 Content-type 标题之前有太多换行符,这使其成为电子邮件正文的一部分。一些客户端会检测到这种错误格式或识别 HTML 内容。其他人会假设 text/plain 或邮件服务器会添加 text/plain 标头本身,因为它认为您没有指定任何标头。

于 2012-09-13T16:11:39.473 回答
0

I would strongly suggest not using PHP's mail() function. It's not fit for purpose, unless you're doing really basic stuff like sending a simple text-only message to a single address.

For anything even slightly more complex, I suggest using the phpMailer class.

phpMailer makes it very easy to work with complex emails in PHP. It handles HTML messages, attachments, multiple recipients, and a bunch of other features, all in a very simple and easy to use API.

See also another answer I wrote previously for more details: Send attachments with PHP Mail()?

于 2012-09-13T16:15:56.567 回答
0

从我的 POV - 什么都没有。如果您阅读 HTML,那是因为客户端无法读取text/html. 我的解决方案?创建多部分电子邮件并同时包含text/htmltext/plain。如果需要,请将您的电子邮件保存在网页中。当您发送 text/html 时,请照常发送。使用 text/plain,将链接发送到您存储电子邮件的网页。

另外,尝试添加这样的空间:

Content-type: text/html; charset=windows-1255

不确定它会改变什么,但谁知道呢。顺便说一句,连接在这里没有用。

于 2012-09-13T15:38:46.873 回答
0

因为是希伯来语,您可以尝试:

$headers .= "内容类型: text/html; charset=utf-8\r\n";

我在希腊邮件中使用它

于 2012-09-13T18:36:08.937 回答
0

尝试Content-type: text/html; charset="iso-8859-8"

于 2012-09-13T15:49:34.417 回答