2

我测试了这个:

<?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”,它就可以了!!所以基本上,邮件服务器填充它自己对它的域的引用,不知道它为什么这样做......

4

3 回答 3

0

对于正文中的 url,一些垃圾邮件服务器将您的邮件分级为“垃圾邮件”。mail()不幸的是,除非您有权访问发件人和收件人的邮件服务器日志,否则您将很难找到更具体的错误消息。提供 SwiftMailer 或其他 PHP 邮件库以获得更好的支持。

于 2012-07-18T20:24:36.680 回答
0

使用 mail() 函数时,您需要指定“发件人”标头。请参阅此文档页面,查找“additional_headers”参数的注释部分。

所以你的 mail() 调用将如下所示:

mail($to, $subject, $body, 'From: some.guy@example.com');

于 2012-07-18T20:38:20.963 回答
0

当然,您不会收到它,因为现在所有主要的网络邮件都使用反垃圾邮件过滤器,并且您的邮件可能被检测为垃圾邮件。解决方案是为 $from 变量准确指定您的电子邮件,如果您没有指定您的真实电子邮件,您的邮件将被检测为垃圾邮件。

于 2016-08-10T01:02:18.053 回答