簡體   English   中英

PHP郵件-錯誤的發件人(來自:)

[英]PHP mail - wrong sender (from:)

我有一個通過cron運行的文件。 向用戶發送電子郵件的文件。

但是有一個問題,問題是,當我通過瀏覽器打開用於讀取郵件的PHP參數時,正確的發件人已按照我在“發件人”中的說明正確設置:

當文件由cron執行時,發送方將被忽略,即將Linux用戶名和主機名作為發送方。

$headers  = "";
$headers .= "MIME-Version: 1.0" . "\n";
$headers .= "Content-type: text/html; charset=utf-8" . "\n";
$headers .= "Content-Transfer-Encoding: 8bit". "\n";
$headers .= "Date: ".date("r"). "\n"; 
$headers .= "To: ". $users. "\n";
$headers .= "From: Somthing <no-reply@mydomain.com>" . "\n";

mail($to, "Remainder 1", "Message body", $headers);

Cron設置就是這樣

/usr/local/bin/php -q /home/user/cron.php

如果像這樣使用“ /usr/local/bin/php -q /home/user/cron.php ”,則將嘗試從與從瀏覽器運行腳本不同的位置執行腳本。

而且,如果您包含具有相對路徑的腳本,它們將100%失敗。

像這樣使用並試一下:' cd /home/user/; /usr/local/bin/php -q /home/user/cron.php cd /home/user/; /usr/local/bin/php -q /home/user/cron.php ,因此您可以從腳本的位置運行腳本。

我永遠不建議您以cron的方式運行PHP腳本。 原因是與通過Apache運行PHP相比,幾乎總是配置不同的PHP(具有不同的php.ini特定設置)。

我建議這樣做的方法是通過wget。 分步操作,您必須這樣做:

  1. cron.php上傳到您網站的文件夾中,或在同一服務器上可訪問的某個位置,但在其自己的文件夾中。 我們稱之為cron-jobs
  2. 通過訪問http://www.yoursite.com/cron-jobs/cron.php確保它可以通過Internet工作
  3. 如果您使用的是Apache,請使用規則創建一個.htaccess文件

     Order Deny, Allow Allow from 127.0.0.1 Deny from all 
  4. 再次測試以確保您沒有收到與htaccess規則相關的500個錯誤。 該規則確保除了服務器本身以外,沒有其他人可以運行該腳本。

  5. 現在修改cron任務以運行腳本

    wget -q http://www.yoursite.com/cron-jobs/cron.php

現在,您應該看到正確的“ From:字段。

暫無
暫無

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

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