我正在使用Migadu邮件服务器和PHP Mailer来设置一个简单的联系表单。
这是PHP文件:
<?php
require("includes/class.phpmailer.php");
require("includes/class.smtp.php");
$name = $_POST['name'];
$email = $_POST['email'];
$message = $_POST['message'];
$smtpHost = "smtp.migadu.com";
$smtpUsername = "info@mywebsite.com";
$smtpPassword = "mypassword";
$to = 'info@mywebsite.com';
$mail = new PHPMailer();
$mail->IsSMTP();
$mail->SMTPSecure = "tls";
$mail->SMTPAuth = true;
$mail->Port = 587;
$mail->IsHTML(true);
$mail->CharSet = "utf-8";
$mail->Host = $smtpHost;
$mail->Username = $smtpUsername;
$mail->Password = $smtpPassword;
$mail->From = $smtpUsername;
$mail->FromName = $name;
$mail->AddAddress($to);
$mail->AddReplyTo($email);
$mail->Subject = "Contact Form";
$body = '<h1>Contact!</h1>';
$body .= '<p><b>Name: </b>'.$name.'</p>';
$body .= '<p><b>Email: </b>'.$email.'</p>';
$body .= '<p><b>Message: </b>'.$message.'</p>';
$mail->Body = $body;
$sentStatus = $mail->Send();
if($sentStatus){
echo json_encode(['status' => 'ok']);
}else{
echo json_encode(['status' => 'error', 'errorType' => 'server']);
}
?>
但它没有发送邮件。此外,它不会抛出任何错误,它只会永远停留在加载中。
答案 0 :(得分:0)
它没有显示任何错误,因为您没有显示任何错误 - 请查看ErrorInfo
属性。 PHPMailer提供的所有示例执行此操作,因此go look at them了解如何执行此操作。
它很可能不是“永远停留”,只是超时很长,这可能是因为你的ISP阻止出站SMTP,这是很常见的。 The troubleshooting guide告诉您如何诊断它。您的ISP可能有另一种发送电子邮件的方法,例如他们可能会提供自己的中继,因此您应该参考他们的文档。