[英]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。 分步操作,您必須這樣做:
cron.php
上傳到您網站的文件夾中,或在同一服務器上可訪問的某個位置,但在其自己的文件夾中。 我們稱之為cron-jobs
http://www.yoursite.com/cron-jobs/cron.php
確保它可以通過Internet工作 如果您使用的是Apache,請使用規則創建一個.htaccess
文件
Order Deny, Allow Allow from 127.0.0.1 Deny from all
再次測試以確保您沒有收到與htaccess規則相關的500個錯誤。 該規則確保除了服務器本身以外,沒有其他人可以運行該腳本。
現在修改cron任務以運行腳本
wget -q http://www.yoursite.com/cron-jobs/cron.php
現在,您應該看到正確的“ From:
字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.