PHP变量无法通过邮件

时间:2017-10-13 09:05:58

标签: php email

我有一个我构造的PHP变量:

$msg_gifted='<body style="border:3px solid 
black;padding:5rem;width:1000px;margin:auto;margin-top:30px;text-
align:center;">';
$msg_gifted.='<img src="/logo.png">';
$msg_gifted.='<h1>It is a mail </h1>';
$msg_gifted.='<p>From: ';
$msg_gifted.=$_POST["useremail"];
$msg_gifted.='</p>';
$msg_gifted.='<p>Amount: GBP';
$msg_gifted.=$_POST["amount"];
$msg_gifted.='<Some text </p>';

然后我发送这个带邮件的变量

 mail($recipient_gifted,$subject_gifted,$msg_gifted,$mailheaders_gifted);
一切正常。 当我为变量添加更多人员时,由于某种原因,邮件永远不会到达

 $msg_gifted='<body style="border:3px solid 
black;padding:5rem;width:1000px;margin:auto;margin-top:30px;text-
align:center;">';
$msg_gifted.='<img src="/logo.png">';
$msg_gifted.='<h1>It is a mail </h1>';
$msg_gifted.='<p>From: ';
$msg_gifted.=$_POST["useremail"];
$msg_gifted.='</p>';
$msg_gifted.='<p>Amount: GBP';
$msg_gifted.=$_POST["amount"];
$msg_gifted.='<p>Some Text</p>';

$msg_gifted.='<p>';
$msg_gifted.='1000';
$msg_gifted.='</p>';

变量有限制吗?

2 个答案:

答案 0 :(得分:2)

您应该考虑使用PHPMailerSwiftMailer之类的内容来发送电子邮件。

很可能你的电子邮件标题出了问题。很难让它们正确,特别是在第一次使用邮件时。

另外,据我所知,没有mail()的变量限制,你已经检查了服务器错误日志吗?

问候

修改
我认为这是一个基于标题的错误。

  

我发现它与标题有关。   整个邮件头变量是:

$mailheaders_gifted = "From: " . $support_email . "\r\n";
$mailheaders_gifted .= "Reply-To: ". $support_email . "\r\n";
$mailheaders_gifted .= "MIME-Version: 1.0\r\n";
$mailheaders_gifted .= "Content-Type: text/html; charset=ISO-8859-1\r\n";
  

我也尝试过:

"Content-type:text/html;charset=UTF-8" . "\r\n";

我仍然建议使用我上面提到的其中一个库。

来自PHP Docs的邮件功能可以解决问题:

  

注意
  如果未收到消息,请尝试仅使用LF(\ n)。一些Unix邮件   转移代理(最值得注意的是»qmail)取代CRLF的LF   自动(如果使用CRLF,则会导致CR加倍)。这个   应该是最后的手段,因为它不符合»RFC 2822。

答案 1 :(得分:0)

我终于设法解决了这个问题。这不是如何设置变量的问题,而是如何设置标头。 我需要编辑我的标题,如:

SELECT * FROM Employees Emp    
    LEFT JOIN Department Dpt ON Emp.EmployeeID= Dpt.EmployeeID    
    LEFT JOIN Grievance Grv ON Emp.EmployeeID= Grv.EmployeeID    
WHERE EmployeeID= @EmployeeID);

然后邮件功能应该是:

$mailheaders_gifted[] = 'MIME-Version: 1.0';
$mailheaders_gifted[] = 'Content-type: text/html; charset=iso-8859-1';
$mailheaders_gifted[] = 'From: My Web Site <mymail@example.com>';