2014-11-23 137 views
0

我的客戶託管服務不接受從該網站發送的電子郵件,該電子郵件在FROM地址的開頭沒有「-f」。這與他們添加的最近傳出的垃圾郵件過濾器有關。phpmailer垃圾郵件過濾器的複雜問題「-f」

官方迴應是:

「數據的發送者信封」中缺少某些元素

我使用PHPMailer的,一切工作正常,直到現在使用SMTP認證。

但是現在有了PHPMailer的,這是行不通

$mail->From   = '[email protected]'; 

也不起作用

$mail->From   = '-f [email protected]'; 

其無效obviousdly,不是一個漂亮的電子郵件地址。

我可以讓郵件實際發送這樣的:

mail('[email protected]', 'the subject', 'the message', null, '-f [email protected]'); 

但事實並非PHPMailer的,這是園林品種PHP函數。所以即時通訊嘗試使PHPmailer自動以某種方式向「FROM」添加「-f」。

我應該調整類文件以某種方式解決這個問題嗎?卡住!

回答

2

你有你的運輸混雜起來。 mail()函數中的-f函數是傳遞給底層sendmail二進制文件的一個附加參數,它設置了郵件的信封發件人(並且正式它不應該有後面的空格,如[email protected])。但是,當您通過SMTP發送時,它不適用,因爲您通過Sender屬性獲取了對該參數的控制權。你應該這樣做:

$mail->Sender = '[email protected]'; 

如果您發送使用SMTP將用其作爲信封發件人(如SMTP MAIL FROM命令的內容),如果您通過isMail()isSendmail()運輸發送,它將設置發件人通過-f屬性。

另外請確保您使用的是GitHub的最新PHPMailer。

+0

你能指點我可以得到的任何文檔isMail()和isSendmail()嗎?我一直沒有使用這些,但郵件仍然發送 - 不確定這些設置會產生什麼影響。 – cardi777 2014-11-25 06:20:10

+0

關於這些的API文檔是[here](http://phpmailer.github.io/PHPMailer/classes/PHPMailer.html#method_isMail),但是對他們來說沒有太多 - 它們比'isSMTP()'簡單得多,但你可以在源代碼[here](https://github.com/PHPMailer/PHPMailer/blob/master/class.phpmailer.php#L1163)和[here](https://github.com/PHPMailer)中看到/PHPMailer/blob/master/class.phpmailer.php#L1097),他們都使用帶'Sender'屬性的'-f'參數。 – Synchro 2014-11-25 10:52:14