2016-10-26 148 views
1

正確顯示我有以下代碼發送我的電子郵件:頭不是電子郵件PHP郵件

$EmailFrom= "[email protected]"; 
$EmailTo = "[email protected], [email protected]"; 
$Subject = "Contact The Loft"; 

$success = mail($EmailTo, $Subject, $Body, $EmailFrom); 

當我提交我的形式,它正確地發送郵件,但是,我的電子郵件顯示不正確的標題。看看下面的圖片:

header-mail

我不想[email protected]顯示爲標題,所以這就是爲什麼我搜索谷歌直通,我發現我需要定製我的標題。所以我做了以下,但現在沒有發送電子郵件。它似乎有一些錯誤的標題:

<?php 
$EmailFrom= "From: HudsonLofts <[email protected]>\r\n"; 
$EmailFrom.= "X-Mailer: PHP/" . phpversion()."\r\n"; 
$EmailFrom.= "MIME-Version: 1.0" . "\r\n"; 
$EmailFrom.= "Content-type: text/html; charset=iso-8859-1 \r\n"; 
$EmailTo = "[email protected], [email protected]"; 
$Subject = "Contact The Hudson Loft"; 

而這正是我所說的郵件功能:

$success = mail($EmailTo, $Subject, $Body, $EmailFrom); 

當我提交表單,並檢查收到的電子郵件沒有我的電子郵件帳戶。

我會感謝您的幫助。在此先感謝

我已經意識到,當我使用FROM:郵件不發送。而且郵件功能不起作用,它返回false。但我拆下,只使用:HudsonLofts那麼它的工作原理,但它沒有正確地在我的電子郵件:(顯示的標題

+0

請參閱郵件手冊http://php.net/manual/en/function.mail.php或使用phpmailer/swiftmailer。它會使這更容易。 –

+0

謝謝,我將檢查它 –

+0

順便說一句,我從問題中刪除了「phpmailer」標記,因爲你的語法不是「phpmailer」,它是「'mail()」,這裏有兩種不同的動物。 –

回答

0

http://php.net/manual/function.mail.php
嘗試在$EmailFrom使用\n代替\r\n

BTW:評論後我會重新命名$EmailFrom$additionalHeaders ;-)

編輯:
如果這不起作用,這一個行頭只是嘗試:
$EmailFrom = "MIME-Version: 1.0";

第二個猜測:在最後的標題行省略\r\n

+0

#1:那不應該有所作爲。 #2:*「順便說一句:我會重命名$ EmailFrom爲$ additionalHeaders」*並且完全用它來做什麼? –

+0

它沒有工作:(當我嘗試調用郵件(主題,,,等),只是返回一個0 :(感謝雖然 –

+0

這實際上取決於很多**很多 - RFC行規終結符爲電子郵件標題爲'\ r \ n' - *但是*如果您使用Postfix作爲郵件服務器,並希望行終止符具有操作系統原生的形式......實際上,它不可能以任何方式破壞。 – CD001

0
$EmailFrom= "[email protected]"; 
$EmailTo = "[email protected], [email protected]"; 
$Subject = "Contact The Loft"; 

$success = mail($EmailTo, $Subject, $Body, $EmailFrom); 

$EmailFrom應該是:

$EmailFrom= "From: [email protected]"; 

或可能 - 但我沒有檢查這一點 -

$EmailFrom= "From: Staff <[email protected]>"; 

因爲the fourth parameter允許您發送任何附加的頭,不只是From :,因此你需要指定完整的頭文件。

如果還是不行,要知道,有些供應商改寫From:頭,以防止濫用(如設置「來源:[email protected]」)。如果是這種情況,您將無法覆蓋該情況。但是如果您與他們交談,您可能可以通過提供商清除發件人。

當使用錯誤形式參數的,一切「工作」,因爲你是不是真的設置任何從外地。當你開始這樣做的時候,服務器可能已經把電子郵件放在了存儲桶中而沒有告訴你任何東西; mail()函數將會成功,因爲郵件被傳送到本地隊列。 mail()無法知道,更不用說告訴你,本地隊列會看到郵件被清除。

相關問題