不幸的是,我在其他问题中找不到答案,即使其中一些似乎相似。我是phpmailer的新手,但我成功地通过使用下面的代码成功地通过smtp发送电子邮件。但是,我希望停止发送带有空字段的电子邮件,但我找不到合适的sintax来做这件事我很乐意建议如果字段为空或如何填写所需的字段,如何停止发送电子邮件。 (我知道如何进行客户端验证,但服务器端是一个问题)。请参阅以下内容:
<?php
if(isset($_POST['submit'])) {
$message=
'Name: '.$_POST['name'].'<br />
Subject: '.$_POST['subject'].'<br />
Email: '.$_POST['email'].'<br />
Message: '.$_POST['message'].'';
require "PHPMailer-master/class.phpmailer.php";
$mail = new PHPMailer();
require "smtp.php";
$mail->SetFrom($_POST['email'], $_POST['name']);
$mail->AddReplyTo($_POST['email'], $_POST['name']);
$mail->Subject = "Message from www";
$mail->MsgHTML($message);
$mail->AddAddress("address1@domain.com", " First receipient");
$mail->AddCC("address2@domain.com", "Second receipient");
$result = $mail->Send();
$message = $result ? '<div class="alert alert-success" role="alert"> Message has been sent ! </div>': '<div class="alert alert-danger" role="alert"><strong>Error!</strong> !</div>';
unset($mail);
}
?>
答案 0 :(得分:1)
您只需要对if语句进行一些检查即可。 empty()
非常适合检查空,空或0字段
if(isset($_POST['submit'])
&& !empty($_POST['name'])
&& !empty($_POST['subject'])
&& !empty($_POST['email'])
&& !empty($_POST['message'])) {
您可以在if
语句之前进行一些验证,以确保字段已填充且有效,如果不是,则抛出错误。
答案 1 :(得分:0)
按照@anyber的建议,我只是想跟进并告诉您,根据您的代码,这看起来像是联系我们表单。
您不想将收件人设置为在表单上输入的电子邮件,您应该将其更改为您的电子邮件地址。使用其他人的电子邮件设置发件人可能会导致很多问题,如果该用户启用了DMARC或其他身份验证方法,请查看以下资源:Common Contact US Problems