2009-06-29 84 views
1

我如何通過php腳本發送郵件? 我試圖做財產以後這樣的:如何通過php腳本發送郵件?

for($k=0;$k<=$x->length-1;$k++) 
{ 
    for($l=0;$l<=$j-1;$l++) 
    { 
     if($y->item($k)->nodeValue==$JobNoArr[$l] && $AcceptanceDateArr[$l]=='0000-00-00') 
     { 
      //echo $v->item($k)->nodeValue ; 
      $email = $v->item($k)->nodeValue . ","; 
      $to = $email; 
      $subject = "My subject"; 
      $txt = "Hello world!"; 
      $headers = "From: [email protected]" . "\r\n" . 
      "CC: [email protected]"; 
      mail($to,$subject,$txt,$headers); 
     } 
    } 
} 

請幫我在這個問題上。

最佳 Zeeshan

+1

所以你有一些代碼。它的表現與你期望的表現有何不同?報告了哪些錯誤? – Quentin 2009-06-29 15:09:23

+0

嗯,我發送電子郵件和郵件是通過谷歌身份號碼,但不是雅虎或另一個域,我基本上尋找工作。 – 2009-06-29 18:56:09

+0

$ y似乎是DOMXPath :: query()的結果,$ JobNoArr/$ AcceptanceDateArr可能來自數據庫查詢,至今爲止?在這種情況下,嵌套的for-loops「味道」是不必要的。您能否更具體地瞭解數據源以及您選擇某些記錄(從xml和數據庫)的方式? – VolkerK 2009-07-08 11:49:15

回答

16

我強烈建議不要使用PHP的mail()函數發送郵件。撰寫有效的電子郵件併成功交付它們比乍看起來要複雜得多。有編碼,把部件放在一起,驗證&衛生,錯誤報告(超過bool mail(...)),支持身份驗證和等等... mail()函數不提供任何這些東西。

嘗試SwiftMailer或類似的。您可以將其配置爲使用PHP的mail()函數等等。我強烈推薦它。

3

先做

echo $result = mail($to,$subject,$txt,$headers); 

,看看有什麼u得到,錯誤?

我建議使用一類這樣的PHPMailer

爲什麼你的部份行的結尾都用逗號?

$email = $v->item($k)->nodeValue . ","; 

您每發送一封郵件。

6

你一次嘗試太多。嘗試一次一步。首先發送一封簡單的電子郵件,使用硬編碼參數來實現這一功能,然後在嵌套循環的上下文中進行故障排除。

2

的PHP的郵件功能使用的sendmail作爲MTA,這樣即使有些郵件經歷,有些不是,我想看看sendmail的記錄錯誤。

1

如果你是一個共享的虛擬主機,或者您的家用電腦,服務器的主要領域將是事遂所願

server.your-isp-or-host.com 

的垃圾郵件過濾器會看到電子郵件,聲稱是從

yourdomain.com 

當它確實來自第一個地址,然後將其刪除。

這將解釋您的錯誤的命中和性質。

如果您位於專用服務器或指向您的家庭計算機並具有正確設置的DNS的靜態IP,則上述內容不適用。

1

如果它工作在發郵件的Gmail那麼它應該工作正常發送電子郵件到yahoo太

你會發現,這個問題是不是電子郵件的發送,但也許雅虎是其標記爲垃圾郵件或阻止他們在網關

我注意到你在電子郵件地址的末尾附加了一個逗號,這是什麼意思?

可能還有其他問題,你的循環是否正確,他們是否涵蓋了你所期望的所有情況。

你發送數以千計的電子郵件?你的mta可以處理你將郵件放入隊列的速度

是你的腳本打max_execution時間和停止?