我在我的网站上有这个简单的表单,当它发送到我的Hotmail帐户时,我不会收到电子邮件,甚至不会收到垃圾邮件文件夹。
以下是表单代码:
<form action="mail.php" method="POST">
<p><label title="Name">Name:</label><br />
<input type="text" name="name" autocomplete="on" required="required"></p>
<p><label title="Email">Email:</label><br />
<input type="text" name="email" autocomplete="on" required="required"></p>
<p><label title="About">My message is about...</label><br />
<select name="about">
<option value="general">General Query</option>
<option value="wedding">Wedding</option>
<option value="corporate">Corporate Event or Trade Show</option>
<option value="other">Other Event</option>
</select>
<p><label title="Message">Message:</label><br />
<textarea name="message" rows="6" cols="25" required="required"></textarea></p>
<input type="submit" value="Send">
</form>
mail.php文件:
<?php
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$about = $_POST['about'];
$formcontent="From: $name \n About: $about \n Message: $message";
$recipient = "MyEmailAddress@Live.co.uk";
$subject = "Contact Form";
$mailheader = "Reply-To: $email \r\n";
mail($recipient, $subject, $formcontent, $mailheader) or die("Error!");
echo "Thank You!";
?>
我最终看到的页面上写着“谢谢!”显示但未收到任何电子邮件。
答案 0 :(得分:3)
邮件投递是一项棘手的业务......仅仅因为您发送邮件并不意味着任何人都会收到邮件。许多接收服务器只会忽略传入的消息,如果它不符合某些标准(根据我的经验,Gmail和Hotmail特别容易默默地拒绝传递,因此它甚至不会在垃圾邮件中结束)。有几件事要确保你已经完成:
1)您在DNS记录中设置了PTR / SPF(反向查询)条目
2)确保您没有使用任何黑名单(http://www.mxtoolbox.com/blacklists.aspx)
3)扩展标题
$headers = "MIME-Version: 1.0\r\n"
."Content-Type: $contentType; charset=utf-8\r\n"
."Content-Transfer-Encoding: 8bit\r\n"
."From: =?UTF-8?B?". base64_encode("Your sending display name") ."?= <$from>\r\n"
."Reply-To: $replyTo\r\n"
."X-Mailer: PHP/". phpversion();
但是,如果您确实希望确保邮件通过,请发送邮件via SMTP。您永远不能保证邮件传递,但它会更可靠。如果您没有发送大量邮件,可以尝试使用Mandrill或类似服务为您转发电子邮件。
答案 1 :(得分:0)
您可以使用以下方法。成功后返回true。
function sendMail($email, $subject, $message)
{
$supportEmail = 'info@abc.com';
$from = 'Abc';
$msg = $message;
$from = str_replace(' ', '-', $from);
$frm = $from.' <'.$supportEmail.'>';
preg_match("<(.*)@(.*\..*)>", $frm, $match);
///////////////////Headers/////////////////
$hdr='';
$hdr.='MIME-Version: 1.0'."\n";
$hdr.='content-type: text/html; charset=iso-8859-1'."\n";
$hdr.="From: {$frm}\n";
$hdr.="Reply-To: {$frm}\n";
$hdr.="Message-ID: <".time()."@{$match[2]}>\n";
$hdr.='X-Mailer: PHP v'.phpversion();
$x=@mail($email, $subject, $msg, $hdr);
if($x==0)
{
$email=str_replace('@','\@', $email);
$hdr=str_replace('@','\@',$hdr);
$x=@mail($email, $subject, $msg, $hdr);
}
return $x;
}