PHP邮件 - 错误的发件人(来自:)

时间:2014-01-13 09:36:11

标签: php email cron

我有一个通过cron运行的文件。该文件向用户发送电子邮件。

但有一个问题,问题是,当我通过浏览器打开文件时,PHP params用于邮件阅读正确的发件人已正确设置我所说的来自:

当文件由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

2 个答案:

答案 0 :(得分:0)

如果您使用这样的'/usr/local/bin/php -q /home/user/cron.php',您将尝试从与浏览器中运行脚本不同的位置执行脚本。

如果您包含具有相对路径的脚本,则它们将100%失败。

像这样使用并试一试:'cd /home/user/; /usr/local/bin/php -q /home/user/cron.php',这样就可以从它的位置运行脚本。

答案 1 :(得分:0)

我从不建议您使用cron运行PHP脚本。 原因是PHP几乎总是以不同的方式配置(具有不同的php.ini特定设置),而不是通过Apache运行。

我推荐的方式是通过wget。一步一步,您必须这样做:

  1. cron.php上传到您网站的文件夹中,或在同一服务器上可访问的某个位置,但在其自己的文件夹中。我们称之为cron-jobs
  2. 访问http://www.yoursite.com/cron-jobs/cron.php
  3. ,确保通过互联网运行
  4. 如果您使用的是Apache,请创建一个包含规则的.htaccess文件

    Order Deny, Allow
    Allow from 127.0.0.1
    Deny from all
    
  5. 再次测试以确保您没有收到与htaccess规则相关的任何500错误。此规则确保除服务器本身外,没有其他人可以运行该脚本。

  6. 现在修改cron任务以像这样运行脚本

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

  7. 您现在应该看到正确的From:字段。