2013-07-16 147 views
5

我嘗試谷歌所有早上,我想我現在需要Stackoverflow!PHPMailer錯誤:SMTP - >錯誤:無法連接到服務器

我寫了一個簡單的腳本來發送郵件(從Hotmail到Gmail) ,但我得到這個錯誤:

SMTP - >錯誤:無法連接到服務器:連接嘗試失敗,因爲連接的方沒有一段時間後沒有正確響應,或者由於連接的主機未能響應而建立的連接失敗。 (10060)SMTP連接()失敗。錯誤

這是代碼:

<?php 
require_once("../includes/phpMailer/class.phpMailer.php"); 
require_once("../includes/phpMailer/class.smtp.php"); 


$to_name = "RECEIVER NAME"; 
$to = "[email protected]"; 


$subject = "Mail test at " . strftime("%T", time()); 

$message = "This is a test message"; 
$message = wordwrap($message, 70); 


$from_name = "MY NAME"; 
$from = "[email protected]"; 


$mail = new PHPMailer(); 

$mail->IsSMTP(); 
$mail->SMTPDebug = 2; 
$mail->Host = "smtp.live.com"; 
$mail->Port = 25; 
$mail->SMTPAuth = true; 
$mail->Username = "MY USERNAME (hotmail)"; 
$mail->Password = "MY PASSWORD (hotmail)"; 


$mail->FromName = $from_name; 
$mail->From = $from; 
$mail->AddAddress($to, $to_name); 
$mail->Subject = $subject; 
$mail->Body = $message; 

$result = $mail->Send(); 

echo $result ? 'Sent' : 'Error'; 

?> 

另一個信息是,甚至沒有標準郵件()函數的工作,並檢查PHP的信息,我發現這個:

sendmail_from - MY正確的郵件(Hotmail的)

sendmail_path - 沒有值

SMTP - 本地主機

smtp_port - 25

謝謝!

+0

是您的託管公司/ isp阻塞端口? – fortune

回答

4

我相信端口25在smtp.live.com上被阻止。我無法從這裏連接到smtp.live.com:25。嘗試使用端口587,而不是TLS。因此,這將是:

$mail->Port = 587; 
$mail->SMTPSecure = 'tls'; 
+0

我嘗試,但我得到兩個錯誤: 這對於端口: SMTP - >從服務器:220 BLU0-SMTP125.phx.gbl Microsoft ESMTP MAIL服務關閉傳輸通道SMTP連接()失敗。錯誤 而這對於TLS: 警告:stream_socket_enable_crypto()[streams.crypto]:這個流不支持SSL /加密在C:\瓦帕\ WWW \ photo_gallery \包括\ PHPMailer的\上線254 class.smtp.php 而且這個錯誤到最後: 客戶端 - > SMTP:退出SMTP - >從服務器:SMTP - >錯誤:SMTP服務器拒絕退出命令:SMTP連接()失敗。錯誤 – johnnyfittizio

+0

看起來像您可能沒有在您的服務器上爲TLS安裝必需的加密庫。您需要通過smtp.live.com發送TLS或SSL。作爲一種解決方法,您是否有Gmail帳戶?如果是這樣,您可以在端口25上通過smtp.gmail.com發送,不使用SSL或TLS加密。 – mti2935

+0

是的,我有Gmail帳戶。你建議嘗試相反的做法,從Gmail發送到Hotmail嗎? – johnnyfittizio

2

我找到了一個解決這個問題,試試這個

檢查你的PHP是否使用OpenSSL的擴展或不...!

  1. 編輯您的的php.ini從您安裝了PHP文件夾
  2. 搜索延長= php_openssl.dll
  3. 最初看起來像這樣;延長= php_openssl.dll
  4. 去除 ';'它看起來像這樣延長= php_openssl.dll
  5. 如果你不能找到延長= php_openssl.dll,加入這行延長= php_openssl.dll
  6. 然後重新啓動您的Xampp或LAMP或APACHE服務器(取決於您正在使用哪些服務器)。

希望這種方法將解決您的問題...

+1

唷,謝謝!這個答案爲我節省了一堆麻煩。 OpenSSL PHP擴展默認情況下在全新安裝中不啓用,(CentOS 6,PHP 5.6)。 – zmippie

0

您可能要檢查支持的端口。例如,我的主機通過端口25,3535和80支持smtp。
使用端口80爲我工作

相關問題