Apache、虚拟主机和 sendmail 的默认发件人

Apache、虚拟主机和 sendmail 的默认发件人

所以我的问题是这样...我有两个网站托管在一台机器上,使用 apache 的虚拟主机。我想使用适当的电子邮件地址从两个不同的网站(domain.com 和 domain2.com)发送电子邮件。我目前在 php.ini 中有这个值:

sendmail_path = /usr/sbin/sendmail -t -i [email protected]

但是当我尝试从 domain2.com 上的脚本发送电子邮件时,它显然会带有标头。Apache 不允许您在指令中设置这样的规则:From: [email protected]<VirtualHost>

php_admin_value sendmail_path "/usr/sbin/sendmail -t -i [email protected]"

那么实现此目的的最佳方法是什么?我尝试在 domain2.com 的指令中进行设置,但所有电子邮件仍然来自 domain.com。有什么想法吗?php_admin_value mail.force_extra_parameters "[email protected]"<VirtualHost>

答案1

虽然你不能在<VirtualHost>指令中设置 sendmail_path,但是你可以在指令中设置它<Directory>。所以我只需要像这样:

<VirtualHost *:80>
    Standard stuff goes here

    <Directory /dir/to/your/web/root>
        php_admin_value sendmail_path "/usr/sbin/sendmail -t -i [email protected]"
    </Directory>

</VirtualHost>

我不确定这是否是实现此目的最合适或最优雅的方法,但它确实有效。抱歉这么久才回复,我不经常上 SF,忘记了这个问题。

答案2

您必须[email protected]从 php.ini 中删除。然后修改邮件为每个向每个主机发送邮件的脚本指定一个函数。这样,​​您就可以为每个虚拟主机传递正确的 -f 参数。

答案3

当我尝试使用 php_value 或 ini_set/ini_get 修改 sendmail_path 时,我遇到了问题(即使 safe_mode 关闭!我真的不知道为什么 - PHP 5.3.3)。然而我重新阅读了 phpmail() 函数,它的解在函数上。

bool mail(字符串 $to,字符串 $subject,字符串 $message [,字符串 $additional_headers [,字符串 $additional_parameters ]])

因此最后一个参数允许附加参数。我将 php 邮件代码从 mail($to,$subject,$message,implode("\r\n", $headerFields),“-f”.$来自(英文):

我认为这是杰夫你会发现这更聪明。

希望这有帮助。

相关内容