2016-11-16 29 views
1

目前我使用PHP郵件功能或CodeIgnitor郵件功能發送郵件。 從郵件ID可以是任何域,例如[email protected][email protected][email protected]PHP郵件使用FROM多個郵件客戶端(Yahoo | Google | Hotmail | Rediff |個人郵件域)

另外要郵件可以是任何域。

當FROM設置爲除YAHOO以外的任何郵件時,我的郵件都會正確發送。 無法從PHP郵件發送郵件來自YAHOO的任何郵件。 雅虎是否阻止我的郵件?

我該如何解決這個問題?

+0

是你通過Yahoo的SMTP服務器轉發你的郵件?如果是這樣,那麼是的。 – Kitson88

+0

@bub可以從任何他們想要的郵件客戶端發送郵件,但必須使用SMTP的一些細節。目前我沒有使用任何SMTP服務器的詳細信息。 –

+0

@ Kitson88目前我沒有使用任何SMTP服務器的詳細信息。如果我這樣做,我將不得不使用幾個SMTP客戶端詳細信息,如Gmail,雅虎,Hotmail等。 –

回答

1

您無法使用郵件服務器代表上述域名成功發送郵件。這些域中的每個域都有一些在DNS中使用的名爲SPF(發件人策略框架)的記錄,它告訴所有收件人檢查SPF的郵件服務器以確認發件人的IP與SPF相同。您需要通過自己的中繼來通過SMTP服務器發送電子郵件。

SPF例如對GMAIL & YAHOO

v=spf1 redirect=_spf.google.com 
v=spf1 redirect=_spf.mail.yahoo.com 

檢查是否使用本網站的域名存在SPF記錄:

http://mxtoolbox.com/spf.aspx

在我看來,你最好的選擇將您的郵件轉發到每個域的正確SMTP服務器。您可以使用PHPMailer輕鬆完成此操作。如果在FROM選項中設置的域是私人管理的域,那麼如果沒有設置SPF記錄並且您的發送IP未列入黑名單,那麼您應該可以代表中繼。

用於檢查的網站,如果你發送IP被列入黑名單:

http://mxtoolbox.com/blacklists.aspx

如何,您可以選擇用於特定域的SMTP設置的示例:

$email = '[email protected]'; 
$domain = explode('@', $email) ; 

switch ($domain[1]) { 

    case 'yahoo.com': 

      //NOT REAL SMTP SETTINGS! 
      $mail->Host = 'smtp1.yahoo.com'; 
      $mail->SMTPAuth = true;        
      $mail->Username = '[email protected]';     
      $mail->Password = 'secret';       
      $mail->SMTPSecure = 'tls';       
      $mail->Port = 587;   

    break; 

    case 'gmail.com': 

      //NOT REAL SMTP SETTINGS! 
      $mail->Host = 'smtp1.gmail.com'; 
      $mail->SMTPAuth = true;        
      $mail->Username = '[email protected]';     
      $mail->Password = 'secret';       
      $mail->SMTPSecure = 'tls';       
      $mail->Port = 587;   

    break; 


} 


//Rest of PHP Mailer code 
相關問題