PHP邮件功能,有些客户端没有将我的邮件显示为html?

时间:2012-09-13 15:36:24

标签: php email

我正在尝试使用带有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或雷鸟用户等客户端完全兼容,但我在其他一些客户端看到它们,这些客户端并不那么出名,但在我的国家仍然广泛使用, 它只是向我展示了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添加到我的,为什么会这样?

5 个答案:

答案 0 :(得分:2)

编辑后:

在Content-type标头之前,您的换行次数过多,这使其成为电子邮件正文的一部分。某些客户端将检测此错误格式或识别HTML内容。其他人会假设text / plain或者mail-server会添加text / plain头文件,因为它认为你没有指定任何文件/ plain文件。

答案 1 :(得分:0)

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

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

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

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

我强烈建议不要使用PHP的mail()函数。它不适合用途,除非您正在做一些基本的事情,例如将简单的纯文本消息发送到单个地址。

对于任何稍微复杂的事情,我建议使用phpMailer class

phpMailer使得在PHP中处理复杂的电子邮件非常容易。它处理HTML消息,附件,多个收件人和许多其他功能,所有这些都在一个非常简单易用的API中。

另见我之前写的另一个答案,详细信息如下:Send attachments with PHP Mail()?

答案 4 :(得分:0)

因为希伯来语你可以尝试:

$ headers。=“Content-Type:text / html; charset = utf-8 \ r \ n”;

我在希腊邮件中使用它