2017-01-01 25 views
1

我有一個將數據發送到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地址和密碼,因此腳本已在本地主機上成功運行。

謝謝。

+0

你確定這587端口是開放的(傳出連接)在你的服務器? – Dekel

+0

@Dekel我從公司租用服務器,這是我需要與他們聯繫的事情嗎?我曾嘗試使用端口25和端口465,GMail的替代選項,他們也沒有在服務器上工作。同時,25和587在本地主機上工作得很好。 – H3ll0

+0

如果它是一個租用服務器,您應該擁有root訪問權限以打開防火牆中的端口,否則不可以。它的方法將根據安裝的操作系統,控制面板等而有所不同。例如,ubuntu使用ufw,任何安裝了WHM/cpanel的操作系統都應該能夠安裝可通過WHM面板 – Chris

回答

1

"@Fred-ii- Thanks this helped resolve my issue. Please post as an answer so I can give credit. – H3ll0 10 mins ago"

動作action="currentFile.php"所屬<form>,不輸入和使用一個GET/POST方法。

您還需要使用任一方法併爲輸入分配/使用數組。

即:

$var = $_POST['var']; // or $_GET depending on the preferred method. 

還應該在頭一個From:,因爲這可能您mailout發送到垃圾郵件或乾脆拒絕。

即:

$mail->setFrom('[email protected]', 'First Last'); 

參考鏈接來解決:

這裏是PHPMailer的GitHub的:


如果沒有SPF記錄(發件人策略框架),創建一個將是有益的。

+0

答案其實是GMail相關的,發現使用調試。由於您提供的鏈接而影響添加調試,謝謝。 – H3ll0

+0

@ H3ll0對,很高興聽到此事已解決,*歡呼聲* –

相關問題