簡體   English   中英

必需的郵件標頭

[英]Required Mail Headers

我有一個網站,我在其中發送確認郵件作為注冊過程的一部分。

前段時間,由於沒有使用headers(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: <admin@mysite.com>\n".
            "X-Mailer: PHP v".phpversion()."\n".
            "From: admin@ mysite.com");

您應該使用外部庫來處理 php 中的電子郵件,例如PhpMailerSwiftMailerZend_Mail 你所有的問題都會迎刃而解。

標題需要在底部留出一個空格來將標題與主體分開。 像垃圾郵件刺客這樣的工具會給你一個很大的分數。

此外,您應該使用\\r\\n作為行終止符,而不僅僅是\\n

來自 PHP.net

多個額外的標題應該用 CRLF (\\r\\n) 分隔。

這是我用於 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

標題對我來說似乎很好。 我看到的唯一故障是 From 標題中的額外空格。

我確定你已經檢查過了,但以防萬一......

"From: admin@ mysite.com");
  should be (?)
"From: admin@mysite.com");

除了@Eineki 指出的細節之外,標題看起來還可以。 此外,如果您使用的是 Windows,您需要以“user@mail.com”而不是“Username”的形式發送 $to 參數,因為它可能會導致麻煩,因為 mail() 函數在 Windows 平台上的實現方式,“to”地址可能會被錯誤解析。

您應該添加一個Date:標頭(它是RFC5322強制性的),如果沒有給出,一些郵件客戶端可能會假定 1970 年 1 月 1 日作為電子郵件日期(並且它會在所有其他舊郵件之間丟失)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM