2009-03-04 68 views
0

我有一個網站,我發送一封確認郵件作爲註冊過程的一部分。郵件標題

前段時間,我發送了一些郵件,因爲我沒有使用郵件頭(php郵件功能)。

一旦我把一些標題,我有更多的用戶反應,但我懷疑並非每個消息都到達目的地。

如何確保郵件到達目的地?

哪些是可以被視爲'必須'的標題?

這是我的SendMail函數的代碼

mail($to, 
    $subject, 
     $message, 
      "MIME-Version: 1.0\n". 
      "Content-type: text/plain; charset=ISO-8859-1; format=flowder\n". 
      "Content-Transfer-Encoding: 8bit\n". 
      "Message-Id: <" . md5(uniqid(microtime())) . "@mysite.com>\n". 
      "Return-Path: <[email protected]>\n". 
      "X-Mailer: PHP v".phpversion()."\n". 
      "From: [email protected] mysite.com"); 

感謝

回答

3

標頭在底部需要一個空白的頭從主體分離。 像垃圾郵件刺客這樣的工具會給你一個很大的分數。你

也應該使用\r\n做爲行的結束,而不是僅僅\n

From PHP.net

多個額外的頭應該以CRLF(\ r \ n)的分離。

1

的頭似乎相當不錯。我看到的唯一的小故障是From頭中的額外空白。

我敢肯定,你已經簽了,但以防萬一...

"From: [email protected] mysite.com"); 
    should be (?) 
"From: [email protected]"); 
0

除了@Eineki指出的細節之外,標頭看起來沒問題。另外,如果您使用的是Windows,則需要以「[email protected]」的形式將$發送給參數,而不是「用戶名」,因爲它可能會導致麻煩,這是由於在windows平臺上實現mail ,「到」地址可能會被錯誤地解析。

0

您應該添加一個Date:標題(其必填字段爲RFC5322),並且某些郵件客戶端可能會將1970年1月1日假定爲電子郵件日期(如果沒有任何郵件),並且它在所有其他舊郵件之間丟失。

1

這是我用於html郵件的工作郵件功能,變量$ return定義爲在郵件失敗時從郵件服務器獲取錯誤報告。

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

@mail($to, $subject, $msg, $headers, $return); 

你可以在這裏sugunan.com

看到更多的細節