php发送邮件代码不起作用

时间:2009-07-09 15:16:57

标签: sendmail php

$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中设置或   第5行的C:\ xampp \ htdocs \ mail.php中缺少自定义“From:”标头   邮件传递失败......

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

我做错了吗?有更好的方法吗?

6 个答案:

答案 0 :(得分:2)

  

additional_headers(可选)

     

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

     

这通常用于添加额外的   标题(From,Cc和Bcc)。多   额外的标题应该用   一个CRLF(\ r \ n)。

     

注意:发送邮件时,邮件必须   包含From标头。这可以设置   使用additional_headers参数,   或者可以在php.ini中设置默认值。   如果不这样做将导致   类似于警告的错误消息:   mail():“sendmail_from”未设置   php.ini或自定义“From:”标题   失踪。 From标头也设置   Windows下的返回路径。

我希望有所帮助。

答案 1 :(得分:1)

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

如果失败,请提供一个From标头,如usoban

所示
$hdrs="From: jijodasgupta@gmail.com";
mail($to, $subject, $body, $hdrs);

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

$from = 'fromemail@domain.com'
$xheaders = "From: " . $from . " <" . $from . ">\n"; 
$i = mail("$useremail","$subject","$content",$xheaders,'-f fromemail@domain.com'); 

答案 4 :(得分:0)

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

当您在同一设置上托管另一个网站并忘记下次设置标题时,这会让您头疼。

答案 5 :(得分:0)

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

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