php
  • email
  • email-headers
  • 2014-03-14 34 views 0 likes 
    0

    我使用PHP mail()函數發送郵件。郵件標題無法正常工作。PHP郵件標題無法正常工作

    $charset = mb_detect_encoding($message); 
    
    $headers = 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'From: '.$from . "\r\n";  
    $headers .= 'Content-type: text/html; charset='.$charset . "\r\n"; 
    $headers .= 'Reply-To: '.$from . "\r\n"; 
    $headers .= 'X-Mailer: php'; 
    

    在上面的代碼中,唯一的第一行被解析,後面的4行顯示在消息正文中。 「From」沒有設置。

    $charset = mb_detect_encoding($message); 
    
    $headers = 'From: '.$from . "\r\n"; 
    $headers .= 'MIME-Version: 1.0' . "\r\n"; 
    $headers .= 'Content-type: text/html; charset='.$charset . "\r\n"; 
    $headers .= 'Reply-To: '.$from . "\r\n"; 
    $headers .= 'X-Mailer: php'; 
    

    在上面的代碼中,「從」和「MIME」線被正確地分析,但後來3行示出了在消息主體中。

    GMail正在接收它。

    +0

    爲什麼你混合單引號和雙引號?使用任何一個。 – Rikesh

    +0

    試試$ headers。='Content-type:text/html; charset = iso-8859-1'。爲 「\ r \ n」 個; –

    +0

    @Rikesh,單引號或雙引號不是問題。 – Sithu

    回答

    2

    您是否試過僅使用\n而不是\r\n

    http://php.net/manual/en/function.mail.php

    注:

    如果沒有收到郵件,請嘗試使用LF(\ n)的唯一。某些Unix郵件傳輸代理(最着名的是qmail)會自動用CRLF代替LF(如果使用CRLF,會導致CR翻倍)。這應該是最後的手段,因爲它不符合»RFC 2822

    您可以使用下面的代碼行尾的變化很容易在電子郵件中規定:

    $EEOL = "\n"; 
    $headers = 'From: '.$from . $EEOL; 
    $headers .= 'MIME-Version: 1.0' . $EEOL; 
    
    +0

    太棒了!有用。您知道如何檢查使用「\ n」或「\ r \ n」嗎? – Sithu

    +0

    根據回答http://stackoverflow.com/a我使用PHP預定義的常量[PHP_EOL](http://php.net/manual/en/reserved.constants.php#constant.php-eol)/4415687/1179841感謝您的回答。 – Sithu

    0

    您應該考慮使用一個電子郵件類庫,而不是php中的常規mail()函數。 我個人喜歡免費的SwiftMailer,因爲它的簡單性和很強的附件功能等。

    相關問題