在 PHP 內用 mail() 發出郵件時,如果沒有指定 Return Path,系統便會以預設的電郵地址代替 (例如 me@localhost 這類)。以下是一個常見的錯誤:

PHP:
  1. <?php
  2. $header = "From:My Name<my_name@mydomain.com>";
  3. mail($to, $subject, $email_body, $header);
  4. ?>

以上設定了所發出的郵件的 From 內容,但這是不夠的,只要查看所發出郵件的 header,會發現有一個 Return-Path 顯示系統的預設電郵。因為現時 spam 非常猖獗,很多 email server 會這類 email 檔掉或者標示成 spam,將以上程式碼改成這檔便可以避免這個問題:

PHP:
  1. <?php
  2. $header = "From:My Name<my_name@mydomain.com>\r\n";
  3. $header .= "Reply-To: My Name<my_name@mydomain.com>\r\n";
  4. $header .= "Return-Path: My Name<my_name@mydomain.com>\r\n";
  5. mail($to, $subject, $email_body, $header);
  6. ?>