我需要一些有关此PHPmailer配置代码的帮助,以便在出于任何原因Jquery验证失败或Javascript被禁用的情况下提供简单表单验证。
的SUCCESS部分工作!
意思是,表单提交按预期发送两封电子邮件,&显示"发送电子邮件!"提交者。
ERROR部分不工作!
意思是,如果 任何 字段为空,则表单提交 不 发送任何电子邮件 < em>和 不 显示任何,但是提交者的空白页面。
编辑:更正 - 我刚做了另一轮测试&amp;发现如果电子邮件字段为空,则第一个Catch正在捕获。但那就是它。我宁愿第二次捕获,以及其他必需的字段。这必须是PHPMailer内置的东西。 /编辑。
1)如果我想要的表单字段为空,我希望在第二个catch
显示中将自定义错误消息提交给提交者。在这个例子中,我想要&#34; name&#34; &安培; &#34;电子邮件&#34;字段(更多以实际形式)而不是&#34;消息&#34;字段。
有人建议我使用您在function validateEmpty
下面看到的catches
代码,但我无法让它发挥作用。我是否在脚本中的错误位置或使用它做了其他错误?
2)在我看来,这个function validateEmpty
部分只适用于&#34;名称&#34;字段,我必须复制它为&#34;电子邮件&#34; &安培;任何其他必填字段?或者是否有更好的方法来添加我想要的表单字段&#34; required&#34;这个功能块?
3)还建议我使用use error_log()
记录任何错误消息。我怎么做?是什么产生了我在ftp目录中其他地方看到的错误消息的文本文件?
4)有人还建议使用an $error & $success flag
。什么是&amp;如果与我在这里做的事情有所不同,我该怎么做呢?
5)最后,我可以通过提交带有空字段的表单轻松测试第二个Catch。我不确定如何测试第一次捕获;是可能的,甚至值得做什么?
<?php
if (isset($_POST['submit'])) {
date_default_timezone_set('US/Central');
require 'PHPMailer-5.2.26/PHPMailerAutoload.php';
function sendemail(
$SK_emailTo,
$SK_emailSubject,
$SK_emailBody
) {
$mail = new PHPMailer(true);
$mail->setFrom('myEmail@gmail.com', 'My Name');
$mail->addReplyTo($_POST['email'], $_POST['name']);
$mail->addAddress($SK_emailTo);
$mail->Subject = $SK_emailSubject;
$mail->Body = $SK_emailBody;
$mail->isHTML(true);
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->Username = 'myEmail@gmail.com';
$mail->Password = 'myPwd';
return $mail->send();
} //end function sendemail
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
try {
sendemail(
'myEmail@address.com',
'First email subject',
'Form results to me...
<br><br>'.$message
);
sendemail(
$email,
'Second email subject',
'Confirmation email to person who submitted the form...
<br><br>'.$message
);
echo 'Email sent!';
} //end try
catch (phpmailerException $e) { //catches PHPMailer errors
echo 'There is a problem; the message did NOT send. Please go back and check that you have filled in all the required fields and there are no typos in your email address.';
echo $e->errorMessage();
}
catch (Exception $e) { //catches validation errors
echo 'There is a problem; the message did NOT send. Please either go back and try again or contact us at email@address.com';
echo $e->getMessage();
}
function validateEmpty($string, $name = 'name') {
$string = trim($string);
if ($string == '') {
throw new Exception(sprintf('%s is empty.', $name));
}
}
} //end if submit
?>
谢谢你的时间&amp;专业知识!
PS:是的,这是另一篇文章的重复,我认为让人感到困惑的是人们停止了帮助...... Form to Email PHP Validation fallback using PHPMailer