我有一個將數據發送到GMail帳戶的PHPMailer聯繫表單。當網站在本地主機上運行時,它會成功完成此操作,但是當我將網頁上載到服務器並嘗試使用聯繫表單時出現以下錯誤:郵件無法發送。郵件錯誤:SMTP連接()失敗。PHPMailer聯繫表單不能在服務器上工作,但在本地主機上?
我通過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 = '[email protected]';
$mail->Password = 'pass';
$mail->SMTPSecure = 'tls';
$mail->Port = 587;
$mail->addAddress('[email protected]');
$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帳戶和密碼應該是「假的」。我打算將目標鎖定爲GMail帳戶,並且已成功放入Google Mail地址和密碼,因此腳本已在本地主機上成功運行。
謝謝。
你確定這587端口是開放的(傳出連接)在你的服務器? – Dekel
@Dekel我從公司租用服務器,這是我需要與他們聯繫的事情嗎?我曾嘗試使用端口25和端口465,GMail的替代選項,他們也沒有在服務器上工作。同時,25和587在本地主機上工作得很好。 – H3ll0
如果它是一個租用服務器,您應該擁有root訪問權限以打開防火牆中的端口,否則不可以。它的方法將根據安裝的操作系統,控制面板等而有所不同。例如,ubuntu使用ufw,任何安裝了WHM/cpanel的操作系統都應該能夠安裝可通過WHM面板 – Chris