PHPMailer联系表单不能在服务器上运行,但在localhost上运行吗?

时间:2017-01-01 22:08:41

标签: php forms server phpmailer

我有一个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上成功运行。

谢谢。

1 个答案:

答案 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记录将是有益的。