我有一个PHPMailer联系表单,可以将数据发送到GMail帐户。当站点在localhost上运行时,它会成功执行此操作,但是当我将网页上传到服务器并尝试使用联系表单时,我收到以下错误:无法发送消息.Mailer错误:SMTP连接( )失败了。
我正在通过Plesk将文件上传到服务器,不过我怀疑它是否相关。这是代码:
<form action="currentFile.php" method="POST">
Full Name:<input required type="text" name="fullname"/>
<input type="submit"/>
</form>
<?php
require 'phpmailer/PHPMailerAutoload.php';
$mail = new PHPMailer;
$mail->isSMTP();
$mail->Host = 'smtp.gmail.com';
$mail->SMTPAuth = true;
$mail->Username = 'mail@gmail.com';
$mail->Password = 'pass';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->addAddress('mail@gmail.com');
$mail->Subject = 'Contact Form';
$mail->Body = "Test";
$mail->AltBody = "Test";
if(!$mail->send()) {
echo 'Message could not be sent.';
echo 'Mailer Error: ' . $mail->ErrorInfo;
} else {
echo 'Message has been sent';
}
?>
我认为将$mail->isSMTP();
更改为$mail->isMAIL();
没有任何区别。当网站在线时(在我的服务器上),我该怎么做才能将表单数据发送到电子邮件?
注意:使用的Gmail帐户和密码是&#34; fake&#34;在下面的代码中。我打算定位一个GMail帐户,并且我已成功输入Google Mail地址和密码,因此该脚本在localhost上成功运行。
谢谢。
答案 0 :(得分:1)
&#34; @ Fred-ii-感谢这有助于解决我的问题。请发帖作为答案,以便我可以给予信任。 - H3ll0 10分钟前&#34;
操作action="currentFile.php"
属于<form>
,未输入并使用GET / POST方法。
您还需要使用任一方法并为输入分配/使用数组。
即:
$var = $_POST['var']; // or $_GET depending on the preferred method.
标题中也应该有From:
,因为这可能会将您的邮件发送到垃圾邮件或完全拒绝。
即:
$mail->setFrom('from@example.com', 'First Last');
排查故障的参考链接:
这是PHPMailer的github:
如果您没有SPF记录(发件人政策框架),那么创建一个SPF记录将是有益的。