[英]Cannot use variable $_SERVER['HTTP_HOST'] in php mail()
我测试了这个:
<?php
$to = "recipient@example.com";
$subject = "Hi!";
$server = $_SERVER['HTTP_HOST'];
$body = "From: ". $server. "<br>";
$body .= "Hi,\n\nHow are you?";
if (mail($to, $subject, $body)) {
echo("<p>Message successfully sent!</p>");
} else {
echo("<p>Message delivery failed...</p>");
}
?>
尽管显示“成功”的反馈,但它永远不会向我发送电子邮件。 该代码将起作用(实际发送电子邮件),但是如果我删除了
$server = $_SERVER['HTTP_HOST'];
在电子邮件正文中。
这只是一个PHP页面。 我通过浏览器调用此页面! 请试试 ...
更新! 好的,我没有使用$ _SERVER ['HTTP_HOST'],而是直接使用字符串“ user.server.com”。 而且,它没有用! 但是,当我稍微修改一个字符串(例如“ user.server.com.us”)时,它可以工作! 因此,基本上,邮件服务器会填充自己对域的引用,不确定为什么要这样做...
某些垃圾邮件服务器会将您的邮件归为体内网址的“垃圾邮件”。 不幸的是,除非您有权访问发件人和收件人的邮件服务器日志,否则您将很难用mail()
查找更具体的错误消息。 提供SwiftMailer或其他PHP Mailing库以获得更好的支持。
使用mail()函数时,需要指定“发件人”标头。 请参考此文档页面,查找“ additional_headers”参数的“注释”部分。
因此,您的mail()调用将如下所示:
mail($to, $subject, $body, 'From: some.guy@example.com');
当然,您不会收到它,因为这些天所有主要的Web邮件都使用反垃圾邮件过滤器,并且您的邮件可能被检测为垃圾邮件。 解决方案是为$ from变量精确指定您的电子邮件,如果您未指定真实电子邮件,则将您的邮件检测为垃圾邮件。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.