gpt4 book ai didi

php - 发送内容类型为 : multipart/alternative 的 PHP 邮件

转载 作者:太空狗 更新时间:2023-10-29 16:07:25 28 4
gpt4 key购买 nike

我正在尝试发送包含 html 和纯文本的多部分邮件。这也是在不支持 HTML 的情况下通过垃圾邮件过滤器并允许更多人阅读邮件的方法之一。花了很长时间谷歌搜索后,我找到了一些例子。我编写了我的代码,它发送邮件但它显示带有 html 标签、代码、字符串等的文本。

<?php
$boundary=md5(uniqid(rand()));
$header .= "From:My Name<something@something.com>\n";
$header .= "Reply-To: something@something.com \n";
$header .= 'MIME-Version: 1.0'."\r\n";
$header .= 'Content-type: multipart/alternative;boundary=$boundary '."\n";

$adres = "something@gmail.com";

$subject = "subject";

$message = "This is multipart message using MIME\n";
$message .= "--" . $boundary . "\n";
$message .= "Content-type: text/plain;charset=iso-8859-1\n";
$message .= "Content-Transfer-Encoding: 7bit". "\n\n";
$message .= "Plain text version\n\n";
$message .="--" . $boundary . "\n";
$message .="Content-type: text/html;charset=iso-8859-1\n";
$message .= "Content-Transfer-Encoding: 7bit". "\n\n";
$message .="<html>
<body>
<center>
<b>HTML text version</b>
</center>
</body>
</html>\n\n";
$message .= "--" . $boundary . "--";

if(mail($adres, $subject, $message, $header))
{
print'message sent';
}
else
{
print'message was not sent';
}
?>

这是结果:

    This is multipart message using MIME
--c071adfa945491cac7759a760ff8baeb
Content-type: text/plain;charset=iso-8859-1
Content-Transfer-Encoding: 7bit

Plain text version

--c071adfa945491cac7759a760ff8baeb
Content-type: text/html;charset=iso-8859-1
Content-Transfer-Encoding: 7bit

<html>
<body>
<center>
<b>HTML text version</b>
</center>
</body>
</html>

--c071adfa945491cac7759a760ff8baeb--

如您所见,它显示编码而不是单独显示消息。我已经尝试过许多解决方案,例如:

  • 添加/删除\r\n;
  • 将\r\n 改为\n;
  • 将内容类型从替代改为混合;

我正在学习 PHP,我所知道的就是到目前为止我所阅读和完成的所有内容。我还有很多东西要学,所以如果你能告诉我问题出在哪里,请告诉我。我将不胜感激。此致问候。

最佳答案

行:

$header .= 'Content-type: multipart/alternative;boundary=$boundary '."\n";

有错误的引号,所以 $boundary 不会被展开。更改为:

$header .= "Content-type: multipart/alternative;boundary=$boundary\n";

正如我在评论中所说,在消息 header 和内容部分 header 中,您应该使用 \r\n 作为换行符,因为这是 RFC 中定义的。大多数 MTA 只允许 \n,但有些 MTA 会在邮件中阻塞,有些垃圾邮件过滤器会将每次违反 RFC 的行为都计为垃圾邮件分数。

使用类似于 PHPMailer 的东西是一个更好的选择,因为它在默认情况下完美地格式化所有内容,并且遵守几乎所有晦涩、乏味的 RFC。

关于php - 发送内容类型为 : multipart/alternative 的 PHP 邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18516665/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com