2012-02-01 114 views
0

我在製作聯繫表。我已經獲得了一個基本版本(收集表單信息並從我的網站發送電子郵件到我的個人電子郵件),但我似乎無法獲得「額外的標題」的工作。它工作正常,如果我有以下標題:郵件頭導致失敗

$headers = 'MIME-Version: 1.0' . "\r\n"; 
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n"; 

但是,如果我嘗試添加額外的郵件標題,例如:

$headers .= 'To: Jack <Jack Johnson>' . "\r\n"; 
$headers .= 'From: Birthday Reminder <[email protected]>' . "\r\n"; 
$headers .= 'Cc: [email protected]' . "\r\n"; 
$headers .= 'Bcc: [email protected]' . "\r\n"; 
$headers .= "\r\nX-Mailer: PHP/" ; 

我得到了郵件功能的「失敗」。我正在使用PHP版本5.3.8。爲了確保郵件功能工作我這樣做:

$sendmail = mail($email_to, $email_subject, $email_message, $headers); 

    if ($sendmail) { 
     echo '<div>Thanks for submitting!</div>'; 
    } else { 
     echo '<div>Fail</div>'; 
    } 

我是不是該格式不正確?

+0

不需要設置「到」頭髮送電子郵件,因爲它是'mail()'函數中的一個單獨參數 – 2012-02-01 21:25:15

+1

在'X-Mailer'之前有一個額外的換行符,它表示客戶端的消息主體的開始。這不會導致'mail()'調用失敗。請接受一些較早的答案! – 2012-02-01 21:38:38

+0

按照上面的建議刪除To:頭文件和錯誤的額外新行,然後重新排列頭文件,以便MIME和內容類型在最後並添加新的最終頭文件'Content-Transfer-Encoding:8bit'。「\ r \ ñ\ r \ n「個;在他們之後(注意雙重新的線)。 – 2012-02-02 00:15:47

回答

1
$headers .= 'To: Jack <Jack Johnson>' . "\r\n"; 

正如在評論中提到的,這並不需要在那裏。但它幾乎肯定會導致問題,因爲它不包含電子郵件地址

另外,作爲在評論中提到,你有雙重\r\n通過將其包括在

$headers .= "\r\nX-Mailer: PHP/" ; 

開始最後,不應該導致問題,但你真的不應該這樣做:

$headers .= 'Bcc: [email protected]' . "\r\n"; 

Bcc線不屬於標題。它們將出現在所有收件人的標題中,破壞密件抄送的要點。您會發現這是在不同的郵件客戶端和服務中間歇處理的。有些會顯示它,有些會保留它,有些會「友好地」將它從標題中隱藏起來。

PHP的郵件()是不是真的旨在處理密件,所以你可能會需要調用mail()函數,並分別發送到密件抄送收件人

相關問題