我有一个网站,在底部有一个"联系我们"部分。它发送电子邮件,但当我在电子邮件中查看时,它会显示在垃圾邮件中。它认为它有一封来自空电子邮件的空消息。这是HTML:
Apply:
<form action ="contact2.php" method "post">
<div class="row control-group">
<div class="form-group col-xs-12 floating-label-form-group controls">
<label>Name</label>
<input type="text" class="form-control"name ="cf_name" placeholder="Name" id="name" required data-validation-required-message="Please enter your name.">
<p class="help-block text-danger"></p>
</div>
</div>
<div class="row control-group">
<div class="form-group col-xs-12 floating-label-form-group controls">
<label>Email Address</label>
<input type="email" class="form-control"name = 'cf_email' placeholder="Email Addres" id="email" required data-validation-required-message="Please enter your email address.">
<p class="help-block text-danger"></p>
</div>
</div>
<div class="row control-group">
<div class="form-group col-xs-12 floating-label-form-group controls">
<label>Message</label>
<textarea rows="5" class="form-control" name = 'cf_message' placeholder="Why should we pick you?" id="message" required data-validation-required-message="Please enter a message."></textarea>
<p class="help-block text-danger"></p>
</div>
</div>
<br>
<div id="success"></div>
<div class="row">
<div class="form-group col-xs-12">
<button type="submit" class="btn btn-success btn-lg">Send</button>
</div>
</div>
</form>
这是PHP:
<?php
$field_name = $_POST['cf_name'];
$field_email = $_POST['cf_email'];
$field_message = $_POST['cf_message'];
$mail_to = 'staff@goldenmistgames.com';
$subject = 'Message from a site visitor '.$field_name;
$body_message = 'From: '.$field_name."'n";
$body_message .= 'E-mail: '.$field_email."'n";
$body_message .= 'Message: '.$field_message;
$headers = 'From: '.$field_email."'r'n";
$headers .= 'Reply-To: '.$field_email."'r'n";
$mail_status = mail($mail_to, $subject, $body_message, $headers);
if ($mail_status) { ?>
<script language="javascript" type="text/javascript">
alert('Thank you for the message. We will contact you shortly.');
window.location = 'contact_page.html';
</script>
<?php
}
else { ?>
<script language="javascript" type="text/javascript">
alert('Message failed. Please, send an email to gordon@template- help.com');
window.location = 'contact_page.html';
</script>
<?php
}
?>
问题很简单,PHP Mail函数没有使用配置良好的SMTP服务器。
如今,电子邮件客户端和服务器对电子邮件发送服务器执行大量检查,如反向DNS查找、灰色列表等。使用php-mail()函数,所有这些测试都将失败。如果你使用的是动态ip,那就更糟了。
使用PHPMailer类并将其配置为使用smtp身份验证以及配置良好的专用smtp服务器(本地服务器或远程服务器),您的问题就消失了。
https://github.com/PHPMailer/PHPMailer