2016-01-03 97 views
1

我不會撒謊。我真的不明白我在這個郵件功能的標題中使用的一些代碼。我一直在試圖修復它自己和一些代碼是從其他論壇帖子等PHP郵件()標題阻止電子郵件發送

$email$subject$msg變量都很好,當我在前面只有這3個測試他們的電子郵件被髮送複製瓦爾。然後我添加了「發件人」部分的標題,發件人名稱已修復(但電子郵件進入我的垃圾文件夾 - 令人討厭)。

現在我試圖給$msg添加一些html標記,並且使用了我的$header變量中的最後2行,但這只是停止發送電子郵件而已。請告訴我如何解決這個問題。

$headers = "From: website <[email protected]>" . PHP_EOL . 
"BCC: [email protected]" . PHP_EOL . 
"MIME-Version: 1.0 \r\n" . PHP_EOL . 
"Content-Type: text/html; charset=UTF-8' \r\n"; 

$email = "[email protected]"; 
$subject = "Weekly Newsletter"; 
mail($email, $subject, $msg, $headers); 

謝謝你們我評論部分提醒我發佈錯誤。它說:

警告:電子郵件():在additional_header發現/path/publishnewsletter.php在線45

+1

你得到一個錯誤? –

+3

請檢查Apache error.log,以及郵件日誌和發佈錯誤? – Zak

+0

我知道我忘了添加一些問題。謝謝 - 警告:mail():在/path/publishnewsletter.php的additional_header中找到多行或格式不正確的換行符,行45 – Tunna182

回答

3

"MIME-Version: 1.0 \r\n" . PHP_EOL .多或畸形換行符是太多了換行。根本不要使用PHP_EOL;使用\r\n,並且只能使用一次。

charset之後還有一個額外的單引號。

$headers = 
    "From: website <[email protected]>\r\n" . 
    "BCC: [email protected]\r\n" . 
    "MIME-Version: 1.0\r\n" . 
    "Content-Type: text/html; charset=UTF-8"; 
-1

看這可能幫助

  • 淨化你的頭。 additional_headers參數中沒有多個換行符。這些算作「多個或畸形的換行符」:\r\r, \r\0, \r\n\r\n, \n\n, \n\0
  • 僅對標題使用additional_headers。電子郵件消息(多部分或不帶附件的ir等)屬於message參數,而不是頭文件。
  • ,並且不使用PHP_EOL

PHP安全性錯誤報告:https://bugs.php.net/bug.php?id=68776
C代碼差異的是如何解決:http://git.php.net/?p=php-src.git;a=blobdiff;f=ext/standard/mail.c;h=448013a472a3466245e64b1cb37a9d1b0f7c007e;hp=1ebc8fecb7ef4c266a341cdc701f0686d6482242;hb=9d168b863e007c4e15ebe4d2eecabdf8b0582e30;hpb=eee8b6c33fc968ef8c496db8fb54e8c9d9d5a8f9

+0

這是正確的答案,但也包括:單一\ n是足夠的。沒有任何需要。 FWIW,如果你只在PHP的新行上有下一行文本,mail命令也會生成一個換行符,從字面上直接輸入你的頭文件,並在行之間返回並且根本沒有任何\ n換行符。它使它更具可讀性。 – joshstrike

+2

「僅爲頭部使用additional_headers。電子郵件消息(multipart與否,與ir沒有附件等)屬於消息參數,而不是標題。「在問題中有沒有跡象表明...? – Ryan

+0

對不起,如果我發佈了一些東西@ RyanO'Hara –