【问题标题】:Php Mail() not sending any emails out? [duplicate]Php Mail() 没有发送任何电子邮件? [复制]
【发布时间】:2011-11-22 19:16:46
【问题描述】:

我有邮件功能

 $to = "fahad@somewhere.com";
 $subject = "Voucher Number: ".$voucher;
     $message = '<html><body>';
     $message .= '<table rules="all" style="border-color: #666;" cellpadding="10">';
     $message .= "<tr style='background: #eee;'><td><strong>Voucher#:</strong> </td><td>" . strip_tags($voucher) . "</td></tr>";
     $message .= "<tr><td><strong>Name:</strong> </td><td>" . strip_tags($name) . "</td></tr>";
     $message .= "<tr><td><strong>Phone Number:</strong> </td><td>" . strip_tags($product) . "</td></tr>";
      $message .= "<tr><td><strong>Email:</strong> </td><td>" . strip_tags($email) . "</td></tr>";


//set content-type
$headers = "MIME-Version: 1.0" . "\r\n";
$headers .= "Content-type:text/html;charset=iso-8859-1" . "\r\n";

// More headers
$headers .= 'From: <livingdeal@overstock-king.com>' . "\r\n";
$headers .= 'cc:'. $email . "\r\n";

mail($to,$subject,$message,$headers);

由于某种原因,我根本没有收到任何邮件。该服务是托管的,所以我没有从 localhost 运行它,即使我写了

if (mail(....))
{ echo "success";
}
else { echo "failed"; }

我总是成功,所以我怀疑这是服务器端的问题。如果 php 邮件从端口 25 发送,有没有办法在脚本中将端口更改为不同的端口?还是在 php.ini 中。

另外,我是否可以使用不同的服务器(具有不同的域)发送邮件,而无需将使用重定向到其他网页?我想换句话说,我可以在发送邮件之前通过 php 脚本连接到 smtp 服务器吗?

【问题讨论】:

  • 您检查过您的 smtp 日志吗?
  • 这是一个常见问题。做一个简单的谷歌搜索,看看如何配置你的邮件服务器。

标签: php


【解决方案1】:

Mail() 不发送邮件,它会将邮件提交给服务器的邮件守护进程进行发送。如果它返回 true,那仅仅意味着它已成功提交到队列中。

您需要查看邮件守护程序的日志以确定邮件是否在队列中,是否实际发送,如果没有,当邮件发送失败时记录了哪些错误消息。

顺便说一句,这台机器正在运行一个邮件守护进程,对吧?

【讨论】:

  • 是的。提供商检查了他的日志并说“没有发生任何事情”
  • 他不能比这更具体吗?在日志中没有发现任何错误消息?
【解决方案2】:

与您的主机核实,许多共享主机公司正在禁用mail() 功能以减少垃圾邮件。

您需要改用 smtp。

像 wordpress 这样的应用有一个简单的插件来处理这种变化。

【讨论】:

  • 当然这意味着您还需要一个 SMTP 服务器。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-08
  • 2018-06-10
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
  • 1970-01-01
  • 2016-04-06
相关资源
最近更新 更多