error_log将参数传递给发件人

时间:2016-05-24 08:24:37

标签: php email debugging error-handling

当我使用$message_type = 1函数"-f" . $sendermail - 通过电子邮件发送时,我需要传递给sendmail额外参数$additional_parameters

我是否可以将参数传递给发件人,与使用error_logMSVFW32.dll AVIFIL32.dll AVICAP32.dll ADVAPI32.dll CRYPT32.dll WLDAP32.dll 的方式相同?

文档说

  

此消息类型使用与mail()相同的内部函数。

但我无法快速了解如何做到这一点。

4 个答案:

答案 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_parameterssee 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添加函数的标准方法。