无法使用邮件()函数发送邮件在php
问题描述:
我想通过邮件获取联系表单详细信息。但是使用mail()函数失败了。这是我的代码。无法使用邮件()函数发送邮件在php
if(isset($_POST['rqsubmit'])) {
$name = htmlspecialchars($_POST['Field1']);
$email = trim($_POST['Field2']);
$phone = trim($_POST['Field3']);
$msg = strip_tags($_POST['Field4']);
//echo $name." ".$phone." ".$email." ".$msg;
$to = '[email protected]';
//$from = $email;
$subject = "Software Development";
$message = "Name:".$name."<br/>Phone".$phone."<br/>Message:".$msg;
//echo $message;
$semi_rand = md5(time()); $mime_boundary = "==Multipart_Boundary_x{$semi_rand}x";
//echo $message;
$headers = "From: [email protected]". "\r\n".
'Reply-To: [email protected]' . "\r\n" .
'X-Mailer: PHP/' . phpversion();
$headers .= "\nMIME-Version: 1.0\n" .
"Content-Type: multipart/mixed;\n" .
" boundary=\"{$mime_boundary}\"";
$ok = @mail($to, $subject, wordwrap($message, 70, "\r\n"), $headers);
if ($ok) {
echo "<p>Thank you for contacting us! !!</p>";
} else {
echo "<p>Mail could not be sent. Sorry!</p>";
}
} else {
echo "mail not sent";
}
我想知道我出错的地方。任何帮助将非常感激。谢谢!
答
也许它被拒绝,因为缺乏发件人的电子邮件地址。
将您自己的电子邮件地址放在From:
标题中,并添加一个包含发件人地址的标头Reply-To:
。
我可以指出你需要在将表单数据放入电子邮件之前彻底检查表单数据。例如,通过将Field2
设置为[email protected]\nBcc: [email protected], [email protected], ...
之类的内容,我可以非常轻松地在整个地方发送电子邮件。
编辑: 对不起,我的错误 - 你没有添加From
头。但是,很可能您的邮件服务器配置为拒绝发件人地址不在其批准发件人列表中的邮件。这就是为什么您需要将自己的地址放在From:
标题中,并将发件人的地址放在Reply-To:
标题中。
编辑2: 另外,你在做什么$mime_boundary
?据我所知,你没有发送一个有效的MIME消息。
生成的错误是什么? – Bhadra
作为第一步,从代码中删除错误抑制运算符('@')并查看它是否输出任何错误。 –
这是错误:“Mail could not be sent。Sorry!。removed @ too。 – rgk