2011-03-22 164 views
1

我試圖從我的服務器發送郵件,而他們沒有進入垃圾文件夾時收到的另一端。我做了我的研究,發現我應該試用PHPMailer。從服務器發送郵件php

現在我已經用了整整兩天的時間來瀏覽互聯網,試圖找出解決這個問題的辦法。我想使用Google免費SMTP服務發送電子郵件。但不能讓這個工作。

我得到的只是錯誤消息:無法連接到SMTP主機 在我實際得到錯誤消息之前,大約需要15秒。

據谷歌稱這是怎麼了,我應該設定我的設置:

http://mail.google.com/support/bin/answer.py?answer=13287

這是我的代碼:(同其他10個指引/教程我已經找到)

header('Content-Type: text/html; charset=utf-8'); 

require_once('../class.phpmailer.php'); 
require_once('../class.smtp.php'); 

$mail = new PHPMailer(); 

$body    = file_get_contents('contents.html'); 
$body    = eregi_replace("[\]",'',$body); 

$mail->IsSMTP();       // telling the class to use SMTP 
$mail->Host  = "smtp.gmail.com";  // SMTP server 
$mail->SMTPDebug = 2;      // enables SMTP debug information (for testing) 

$mail->SMTPSecure = 'ssl'; 
$mail->Port = 465; 
$mail->SMTPKeepAlive = true; 
$mail->SMTPAuth = true; // enable SMTP authentication 
$mail->CharSet = 'utf-8'; 

$mail->Username = '[email protected]'; // SMTP account username 
$mail->Password = 'mypw'; 

$mail->SetFrom('[email protected]', 'My name'); 
$mail->Subject = "PHPMailer Test Subject via smtp, basic with authentication"; 
$mail->AltBody = "To view the message, please use an HTML compatible email viewer!"; 

$mail->MsgHTML($body); 

$mail->AddAddress("[email protected]", "Reciever Name"); 

if(!$mail->Send()) { 
    echo "Mailer Error: " . $mail->ErrorInfo; 
} else { 
    echo "Message sent!"; 
} 

所以這顯然不起作用。我應該接觸我的isp嗎?或者我應該嘗試其他的東西?我真的需要能夠發送電子郵件,而不他們直行到垃圾郵件文件夾...

最好的問候, 亞歷山大

+0

許多ISP阻止訪問外部SMTP服務器作爲垃圾郵件防範措施。您可以使用普通郵件客戶端從運行此腳本的任何地方向Gmail帳戶發送郵件嗎? – 2011-03-22 14:31:58

回答

0

我試圖從我的服務器發出郵件,而他們沒有進入垃圾文件夾,當收到另一端。我做了我的研究,發現我應該試用PHPMailer。

錯。你沒有做好你的研究。

如果它們遠到遠端,那麼代碼沒有任何內在錯誤。使用phpmailer()不會有幫助。使用不同的SMTP服務可能會有所幫助,但這並不能幫助您理解這裏發生的事情。

如何獲取遠程系統無法處理您的電子郵件爲垃圾郵件已被要求在這裏回答了無數次的問題:

  • 嘗試讀一些很多很好的答案,這些其他職位
  • 有沒有明確的答案 - 有太多的因素,即使你知道他們究竟是你無法解釋他們都
  • 所有你能做的就是讓你的郵件看起來像垃圾郵件
  • 這是關於te電子郵件的內容以及電子郵件服務器/ DNS配置的方式
0

您的郵件,如「Spamassassins」標記爲垃圾郵件的軟件,還有很多事情要知道,根據最新版本的列表,您的消息被評爲Spamassassin:SpamAssassin Tests

看一看,你會很容易理解爲什麼你的郵件被標記爲垃圾郵件。

您到達的分數越高,被標記爲垃圾郵件的概率越高,嘗試以純文本形式發送。

0

如果您無法連接到SMTP,它可能根本不是代碼相關的。事實上,從它的聲音來看,你的代碼正在盡力去做它應該做的 - 只是失敗。

您的服務器可以通過您機器或網絡上的任何防火牆訪問端口465上的smtp.gmail.com嗎?是否允許在另一端? (Google允許這種訪問嗎?)

您可以嘗試使用PuTTy或類似的方法直接訪問郵件服務器,然後鍵入一些SMTP命令以查看您收到的郵件。

如果你有一個本地郵件服務器正在運行,我會試着用它發送一些消息並從那裏開始工作。

一旦你真的可以發送電子郵件,正如其他答案中提到的那樣 - 你可以開始擔心被服務器接受而不被視爲垃圾郵件!

0

這聽起來像您的問題與反垃圾郵件處理無關,而是無法實際連接到Google SMTP服務器。這就是我關注的重點。答覆中的長時間延遲通常會導致我查出可能的DNS問題,作爲故障排除的第一步。你能夠從你的服務器ping smtp.gmail.com嗎?如果主機名由DNS解析並得到響應,則檢查出站端口465是否在防火牆處被阻塞。

相關問題