当我使用$message_type = 1
函数"-f" . $sendermail
- 通过电子邮件发送时,我需要传递给sendmail额外参数$additional_parameters
我是否可以将参数传递给发件人,与使用error_log和MSVFW32.dll
AVIFIL32.dll
AVICAP32.dll
ADVAPI32.dll
CRYPT32.dll
WLDAP32.dll
的方式相同?
文档说
此消息类型使用与mail()相同的内部函数。
但我无法快速了解如何做到这一点。
答案 0 :(得分:2)
就一个“快速”的方式而言,假设你的意思是传递额外的论据或类似的,那么没有。请查看source code for error_log
,注意NULL
已明确传递给mail
函数的相关参数:
if (!php_mail(opt, "PHP error_log message", message, headers, NULL)) {
除了使用set_error_handler
之外,您可以尝试使用运行时配置mail.force_extra_parameters
(see docs)。
强制添加指定参数作为额外参数传递给sendmail二进制文件。即使在安全模式下,这些参数也总是将第5个参数的值替换为mail()。
我以前曾经使用过这个,但是它的注意事项会覆盖其他地方,所以你可能不得不考虑它是否对你有益。例如,这是我在apache dev服务器上的.conf
include中使用的内容:
# force envelope sender and name and in turn ignore any passed in to PHP mail() function
php_admin_value mail.force_extra_parameters "-f leonard@mydevserver.co.uk -F \"Development: leonard\""
答案 1 :(得分:1)
基于PHP源,error_log
函数调用php_mail
并为此参数发送NULL
值。
case 1: /*send an email */
if (!php_mail(opt, "PHP error_log message", message, headers, NULL)) {
return FAILURE;
}
break;
(资料来源:php-src/ext/standard/basic_functions.c)
你必须坚持使用set_error_handler
并编写自己的错误处理程序。
答案 2 :(得分:1)
我没有使用message_type 1尝试error_log
,但我知道mail
是如何工作的,所以我想你必须尝试这样的事情:
$headers = "From: $name <{$email}>\r\n".
"Reply-To: {$email}\r\n";
error_log('Foo', 1, 'bar@php.com', $headers);
答案 3 :(得分:0)
您需要使用error_log_handler,如http://php.net/manual/en/function.set-error-handler.php
所示mixed set_error_handler ( callable $error_handler [, int $error_types = E_ALL | E_STRICT ] )
设置一个函数来处理脚本中的错误。我相信这是向error_logs添加函数的标准方法。