所以我的问题是这样...我有两个网站托管在一台机器上,使用 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”.$来自(英文):
我认为这是杰夫你会发现这更聪明。
希望这有帮助。