我在我的网站上设置了 cron 作业,它们运行良好,但我的问题是这些 cron 作业以电子邮件形式发送的输出以“发件人名称”作为 Cron Daemon 传递。请问我有什么办法可以将其更改为更个性化的名称。谢谢
来自OP的评论:
运行我的文件的命令行是:
php -q /home/username/public_html/x_y_z.php.
然后,cron 作业会将文件 (x_y_z_.php) 的输出作为电子邮件发送。
答案1
似乎这方面有很多错误的信息,但有两个选项可以在没有包装脚本的情况下工作。
首先,在某些系统上,您可以MAILFROM
像设置一样进行设置MAILTO
。man 5 crontab
将告诉您是否MAILFROM
可用。
否则,另一个选择是改变mailname
文件。
sudo vi /etc/mailname
更改。
答案2
除非您具有 root 访问权限并且知道使用哪个 MTA 发送这些邮件(sendmail、exim、postfix?),否则无法更改 cron 用户的“真实姓名”,并且每个 MTA 都有自己的方式为 unix 用户分配真实姓名(cron 很可能以用户“cron”的身份运行)。
最好的办法是从 PHP 脚本发送邮件,而不是依靠 cron 来执行。
只需对代码进行少量修改即可快速完成此操作:
<?php
ob_start();
/* >>> your existing php code goes there */
$output = ob_get_contents();
ob_end_clean();
/* the text to be mailed is now in variable $output */
mail("[email protected]", "Mail from cron job" , $output, "From: Webmaster <[email protected]>\r\nReply-To: [email protected]");
?>
如果邮件功能在您的 PHP 安装中无法正常工作,您将不得不使用第三方库,例如 PEAR::Mail。
答案3
我必须更改/etc/mail/sendmail.cf
和/etc/mail/sendmail.mc
,因为/etc/mailname
没有使用。但它只会更改发件人域,而不会更改用户。