【问题标题】:Can't send md5 in PHP mail() email [closed]无法在 PHP mail() 电子邮件中发送 md5 [关闭]
【发布时间】:2014-05-24 01:58:17
【问题描述】:

我在使用mail() 函数时没有收到任何错误,但实际上并未发送电子邮件。我正在向我的客户发送一个激活链接,我发现如果我包含$activationmd5(uniqid(rand(), true)); 电子邮件实际上并不是从服务器发送的。

对于我使用的标题:

$headers = "From: example@example.net\r\n";
$headers .= "Reply-To: example@example.net\r\n";
$headers .= "MIME-Version: 1.0\r\n";
$headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n";

我已经看到一些其他主题,人们将md5 放在标题中的边界事物内,但我不明白那是什么。任何人都可以帮助解释为什么我不能在 PHP mail() 函数的 HTML 邮件中包含 md5 字符串?

如果我只是删除该变量,则电子邮件发送成功,我可以毫无问题地接收和查看它。

提前感谢您的帮助。

【问题讨论】:

  • 我怀疑您使用实际哈希的语法错误;你能发布一个你如何构建消息的例子吗?
  • 类似:$key = md5(rand()); $url = "yoursite.com/auth/activate.php?key=".$key; 不起作用?
  • 不要使用mail()。获得像 PEAR 一样的像样的 Mail 库。
  • @matcartmill nop 甚至不仅仅是 md5(rand());不行,还是收不到邮件。
  • @TiesonT。正如我告诉你的那样,如果我没有成功接收到 md5 哈希,消息就完全没问题。我替换确认链接的方式是 $message = str_replace("[CONFIRMATION LINK HERE]","http://***.net/activate.php?email=" . urlencode($_POST['email']) . "&key=" . $activation, $message);如果我从该行中删除 $activation ,则消息发送成功.. :/

标签: php email md5


【解决方案1】:

看来您基本上是想使用mail() 来使用multi-part message bodies as described in RFC 2046 发送消息。

显而易见的问题是:为什么?当有大量的图书馆准备为您完成无聊的部分时,您为什么要重新发明轮子?

我建议您改用PEAR Mail 来发送您的消息。您可以使用文本和 HTML 版本、附件和您想要的任何内容编写丰富的电子邮件。它比在上面编写自己的代码可靠得多。

【讨论】:

    猜你喜欢
    • 2011-04-21
    • 2012-10-30
    • 1970-01-01
    • 1970-01-01
    • 2011-10-02
    • 1970-01-01
    • 2020-07-10
    • 2016-09-28
    相关资源
    最近更新 更多