4
$to = "jijodasgupta@gmail.com";
$subject = "Hi!";
$body = "Hi,\n\nHow are you?";
if (mail($to, $subject, $body)) {
  echo("pMessage successfully sent!/p");
} else {
  echo("pMessage delivery failed.../p");
}

写了一个基本的 php sendmail 代码,但它给了我以下错误:

警告:mail() [function.mail]: "sendmail_from" 未在 php.ini 中设置或自定义 "From:" 标头在第 5 行 C:\xampp\htdocs\mail.php 中丢失消息传递失败...

我更改了``php.ini 文件并放入sendmail_from=jijodasgupta@gmail.com,但问题仍然存在。第一次写邮件脚本。

难道我做错了什么?有一个更好的方法吗?

4

6 回答 6

2

附加标题(可选)

要插入到电子邮件标题末尾的字符串。

这通常用于添加额外的标题(发件人、抄送和密送)。多个额外的标头应该用 CRLF (\r\n) 分隔。

注意:发送邮件时,邮件必须包含 From 标头。这可以使用 additional_headers 参数设置,或者可以在 php.ini 中设置默认值。不这样做将导致类似于警告的错误消息:mail(): "sendmail_from" not set in php.ini or custom "From:" header missing。From 标头还设置了 Windows 下的 Return-Path。

我希望这会有所帮助。

于 2009-07-09T15:21:23.467 回答
1

首先,检查你编辑的 php.ini 是否正确——phpinfo();在你的脚本输出中添加诊断信息,包括 php.ini 的位置。您还应该能够在此处看到配置的“sendmail_from”值。

否则,请提供 From 标头,如usoban 所示

$hdrs="From: jijodasgupta@gmail.com";
mail($to, $subject, $body, $hdrs);
于 2009-07-09T15:21:34.153 回答
1

如果您编辑了正确的 php.ini 并且它没有反映您的更改,您可能需要重新启动您的 Web 服务,因为许多环境只会在服务器启动时加载 php.ini。

于 2009-07-09T16:22:28.243 回答
1

我遇到了同样的问题,最终是因为我的服务器使用的account@servername是来自电子邮件地址,即使我在标题中指定了我自己的地址。

我在其他地方找到的答案是在邮件调用中添加第 5 个参数,以强制系统使用我指定的发件人电子邮件地址:

$from = 'fromemail@domain.com'
$xheaders = "From: " . $from . " <" . $from . ">\n"; 
$i = mail("$useremail","$subject","$content",$xheaders,'-f fromemail@domain.com'); 
于 2012-09-12T02:15:25.810 回答
0

与其在 php.ini 中设置表单地址,不如将其发送到 usoban 所说的标题中。

当您在同一设置上托管另一个站点并且下次忘记设置标头时,这将为您省去麻烦。

于 2009-07-09T16:26:27.877 回答
0

PHP mail() 函数会产生很多问题。当你最终让它在你的服务器上运行时,你会注意到你的电子邮件最终进入了用户的垃圾邮件文件夹。

我建议使用其中一个 PHP SMTP 库来发送邮件:

于 2009-07-09T17:17:30.427 回答