【发布时间】:2014-05-24 01:58:17
【问题描述】:
我在使用mail() 函数时没有收到任何错误,但实际上并未发送电子邮件。我正在向我的客户发送一个激活链接,我发现如果我包含$activation 即md5(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 ,则消息发送成功.. :/