2013-08-03 66 views
1

使用cakePHP版本2.3.8,cakephp如何更改X-Mailer

我試圖將X-Mailer:CakePHP電子郵件轉換爲X-Mailer:PHP郵件。 我已經在控制器和/app/Config/email.php中的'默認'設置中嘗試過。

'X-Mailer' => 'PHP mail', 

但無法讓它改變,真令人沮喪。

回答

4

您需要使用addHeaders()在發送電子郵件之前對其進行更改。 像這裏所做的那樣,例如: https://github.com/dereuromark/tools/blob/master/Lib/EmailLib.php#L638 在這種情況下 - 擴展核心類 - 可以使用Configure通過配置自動填充X-Mailer。但是,您也可以爲每個電子郵件發送功能進行內聯。

基本上,你的CakeEmail對象:

$CakeEmail = new CakeEmail(); 
$CakeEmail->addHeaders(array('X-Mailer' => 'My custom X-Mailer')); 

如果設置手動蛋糕不會增加他的默認值 'CakePHP的電子郵件'。

+0

謝謝,我發現我也可以這樣做: - > setHeaders(array('X-Mailer'=>'PHP郵件',在控制器中可能不那麼優雅,但我希望它仍然是正確的cakyway :-) – Nick

+0

setHeade rs()當然也適用 - 只要你之前沒有設置任何其他頭文件。否則它們將被覆蓋。 – mark

+0

非常感謝Mark,現在我只剩下一些東西可以排序了,這就是我的電子郵件地址驗證和數字,我已經從您的網站使用編碼作爲示例,但驗證是一個問題,與數字相同,它也接受AAA。 – Nick

1

的CakePHP 2, 而不是從一個控制器每次都將其設置爲通過@馬克建議, 可以在EmailConfig類設置,位於配置/ email.php:

public $default = array(
    'transport' => '...', 
    'from' => '...', 
    'emailFormat' => 'both', 
    'charset' => 'utf-8', 
    'headerCharset' => 'utf-8', 
    'headers'=>array('X-Mailer'=>'Your App Name'), 
); 

將發送電子郵件與這些標頭:

To: ..... 
X-Mailer: Your App Name 
Date: ....