【发布时间】:2020-08-08 14:34:51
【问题描述】:
如果看到有人问同样的问题,但缅因州有点不同。
我有一个联系我的表格,我收到了所有发件人信息,如姓名、电子邮件、主题和消息,我使用 PHPMailer-5.2 从我的电子邮件地址将这些信息发送到我的电子邮件地址。 我提交表单而不使用 js 刷新页面,它在本地主机上运行良好,但在实时服务器上运行良好。 我不知道为什么我需要帮助?
这里是代码
联系表格
<html>
<head>
<meta charset="utf-8">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.2.1/jquery.min.js"></script>
<script type="text/javascript">
function chk()
{
var name = document.getElementById("name").value;
var email = document.getElementById("email").value;
var subject = document.getElementById("subject").value;
var message = document.getElementById("message").value;
if(name && email && subject && message) {
$.ajax({
type: "post",
url: "sendmail.php",
data: {
user_name:name,
user_email:email,
user_subject:subject,
user_message:message
},
success: function (response) {
document.getElementById("status").innerHTML="Message sent successfully. I will reply as soon as possible!";;
}
});
}
return false;
}
</script>
</head>
<body>
<form>
<p>
<label> Your Name (required)<br />
<input id="name" required="" type="text" /><br />
</label>
</p>
<p>
<label> Your Email (required)<br />
<input id="email" required="" type="email" /><br />
</label>
</p>
<p>
<label> Subject (required)<br />
<input id="subject" required="" type="text" /><br />
</label>
</p>
<p>
<label> Your Message (required)<br />
<textarea cols="40" id="message" required="" rows="10"></textarea><br />
</label>
</p>
<p>
<input type="submit" value="Send" onclick="return chk()">
</p>
</form>
<p id="status"></p>
</body>
</html>
发送邮件.php
<?php
require_once('PHPMailer-5.2-stable/PHPMailerAutoload.php');
if(isset($_POST['user_name']) && isset($_POST['user_email']) && isset($_POST['user_message']))
{
$name=$_POST['user_name'];
$email=$_POST['user_email'];
$subject=$_POST['user_subject'];
$message=$_POST['user_message'];
$email1="dagm*****@gmail.com";
$message1 = "Name : ".$name."<br>"."Email : ".$email."<br>"."Subject : ".$subject."<br>".$message;
$mail = new PHPMailer();
$mail->isSMTP();
$mail->SMTPAuth =true;
$mail->SMTPSecure = 'ssl';
$mail->Host = 'smtp.gmail.com';
$mail->Port = '465';
$mail->isHTML();
$mail->Username = 'dagmawi****@gmail.com';
$mail->Password = '***********';
$mail->SetFrom($email);
$mail->Subject = $subjec;
$mail->Body = $message1;
$mail->AddAddress($email1);
$mail->Send();
}
?>
【问题讨论】:
-
尽管您需要在
chk()中调用event.preventDefault();来停止提交表单以及Ajax 提交,但我还是希望 -
看看你服务器上的日志,应该会告诉你一些事情
-
两件事:升级到最新的PHPMailer;阅读故障排除指南,了解如何诊断此类问题。 Gmail 有一些非常有据可查的奇怪之处。还将您的代码基于 PHPMailer 示例 - 您没有调试输出和错误检查,因此您甚至无法判断它失败了,更不用说查看原因了。
-
与 ajax 无关,它工作正常问题出在 sendmail.php