【问题标题】:PHP mail() fails if the subject doesn't contain "Subject: "如果主题不包含“主题:”,PHP mail() 将失败
【发布时间】:2015-05-12 17:50:32
【问题描述】:

如果我使用 PHP mail() 函数发送邮件,除非我在主题行前加上“主题:”一词,否则邮件将无法通过。

代码如下:

 $from = "shamsneed@gmail.com";
 $subject = urldecode($_GET['theSubj']) . "\r\n";
 $body =  "Here ya go now\r\n";
 $Header = "From: $from \r\n";

 $retval = mail($advertisersEmail, $subject, $body, $Header);

编辑:即使收件人没有收到电子邮件,“retval”也始终为“1”。

我什至试过这个:

 $Header .= "Subject: $subject";

以上均未成功向收件人发送电子邮件。

我在上面的代码上尝试了很多排列:删除所有的“\r”,删除所有的“\r\n”,不使用 urldecode()。

我可以发送电子邮件的唯一方法是将“主题”更改为:

 $subject = "Subject: " . urldecode($_GET['theSubj']) . "\r\n";

问题在于,“主题:”一词出现在他们从我们网站收到的收件人电子邮件中,我不希望这样。我检查了邮件的 PHP 手册,它没有说明需要将“主题:”添加到 mail() 的第二个参数中传入的主题。

我在这里错过了什么?

【问题讨论】:

  • $from 值会用引号引起来吗?不是吗?是你自己写的还是这样的?
  • 修正了,实际代码是正确的,我只是上面一开始打错了。

标签: php


【解决方案1】:

邮件地址似乎不在引号中,请先尝试修复它。

您是使用共享主机还是私人服务器?如果是共享主机,请尝试联系他们。我通过 PHP 发送了很多邮件,从来没有遇到过这个问题。

如果一切都不起作用,请尝试通过 SMTP 发送邮件。您可以使用 PHPMailer 之类的库来让您的生活更轻松。

【讨论】:

  • 我在共享主机上。我怀疑你可能是对的,我的托管服务提供商 (1and1) 可能在某个 .ini 文件中的 PHP 设置错误....
猜你喜欢
  • 1970-01-01
  • 2016-11-18
  • 2013-02-03
  • 1970-01-01
  • 2020-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-27
相关资源
最近更新 更多