] PHP警告:mail():php.ini中未设置“sendmail_from”或缺少自定义“From:”标头

15

我正在尝试使用PHP的mail()函数发送测试邮件。

$to = "****@gourab.me";
$sub = "Php Mail";
$msg = "Test Message From PHP";

mail($to, $sub, $msg, "From: **********@gmail.com");

当我尝试通过 phpdbg 中的 step 来调试它时,它显示以下信息:

[PHP Warning: mail(): " sendmail_from" not set in php.ini or custom "From:" header 
missing in C:/xampp/htdocs/tinyProj/mail.php on line 4]

我不明白为什么?


3
问题很清楚地表达为:“我不明白为什么?还有其他人吗?” - Epirocks
4个回答

41

似乎你的From头部格式不正确。请尝试使用以下格式:

$headers =  'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'From: Your name <info@address.com>' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

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

2
我尝试过了,但现在phpdbg显示[PHP Warning: mail(): Failed to connect to mailserver at localhost port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() - Ikari
你是在实时服务器上还是只在你的个人电脑上? - fillobotto
我正在使用XAMPP在我的电脑上。 - Ikari
1
那就是问题所在,sendmail/postfix服务没有运行。 - fillobotto
这不是主题,你应该开一个新的问题。在共享/独立服务器或虚拟机上尝试代码并查看它是否有效。 - fillobotto
让我们在聊天中继续这个讨论 - Ikari

5

兄弟,看起来你正在使用自己的PC/localhost/127.0.0.1服务器,所以无法连接到SMTP服务器。你只能使用类似的编码并进行一些修改 :),即添加一个参数“Header / From”,才能从实时服务器发送邮件。

mail("You@me.com","Answer","Hope You Vote My Answer Up","From: me@you.com");

0
<?php
if(isset($_POST['send'])){
     $from =  $_POST['femail'];
     $phoneno = $_POST['phoneno'];
     $message = $_POST['message'];
     $carrier = $_POST['carrier'];
     if(empty($from)){
       echo("enter the email");
       exit();

     } 
else if(empty($phoneno)){
   echo("enter the phone no");
     exit();
   }
 elseif(empty($carrier)){
   echo("enter the specific carrier");
   exit();
    }
 else if(empty($message)){
  echo("enter the message");
  exit();
  }
  else{
     $message = wordwrap($message, 70);
     $header = $from;
     $subject = 'from submission';
     $to = $phoneno.'@'.$carrier;
     $result = mail($to, $subject, $message, $header);
     echo("message sent to".$to);

  }

  }
?>

亲爱的Yusuph,回答这种问题时,您应该尽量更直接一些。问题说它收到了一个错误消息,但代码似乎没问题。 - Alessandro Oliveira

0
<?php
$to = "somebody@example.com";
$subject = "My subject";
$txt = "Hello world!";
$headers = "From: webmaster@example.com" . "\r\n" .
"CC: somebodyelse@example.com";

mail($to,$subject,$txt,$headers);
?>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接