Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 无法使用hook\u mail在Drupal 7中发送电子邮件_Php_Drupal_Drupal 7 - Fatal编程技术网

Php 无法使用hook\u mail在Drupal 7中发送电子邮件

Php 无法使用hook\u mail在Drupal 7中发送电子邮件,php,drupal,drupal-7,Php,Drupal,Drupal 7,请告诉我哪里有问题,我试着发电子邮件,但没用。我看到的一个错误是firebug控制台中的“500内部服务器错误”。我使用AJAX访问执行drupal_mail(…)的函数。请帮我找个人解释一下,如果它不起作用,请提前谢谢 function duels_create_duel(){ $params = array(); $params['subject'] = "Theme"; $params['message'

请告诉我哪里有问题,我试着发电子邮件,但没用。我看到的一个错误是firebug控制台中的“500内部服务器错误”。我使用AJAX访问执行drupal_mail(…)的函数。请帮我找个人解释一下,如果它不起作用,请提前谢谢

    function duels_create_duel(){
       $params = array();
                $params['subject'] = "Theme";
                $params['message'] = "Test message";
                $params['body'] = array();
                $params['body'][] = "Test message1";
                $params['body'][] = "Test message2";
                $params['body'][] = "Test message3";
                $params['headers']['MIME-Version'] = '1.0';
                $params['headers']['Content-Type'] = 'text/html; charset=UTF-8; format=flowed';
                $params['headers']['Content-Transfer-Encoding'] = '8Bit';
                $params['headers']['X-Mailer'] = 'Drupal';                    
                drupal_mail("duels", "duel_start_op", "viktor.s@glyanec.net",       language_default(), $params);
                print json_encode(1); exit;
    }
    duels_create_duel();

    function duels_mail($key, &$message, $params){
        switch($key){
            case 'duel_start_op':
                if (isset($params['subject'])) {
                    $message['subject'] = str_replace(array("\r", "\n"), '', $params['subject']);
                }
                if (isset($params['body'])) {
                    $message['body'][] = $params['body']; 
                }
                if (isset($params['headers']) && is_array($params['headers'])) {   
                    $message['headers'] += $params['headers'];
                }
//this one i use just for checking.
                mail('viktor.s@glyanec.net', 'test', "Failed"."\r\n" . print_r($message, TRUE)); 
            break;
            case 'duel_start_u':
            break;
            case 'duel_rejected':
            break;
        }
    }

您是如何声明和访问AJAX函数的?我通过按下按钮来使用AJAX,然后向函数发送请求。在该函数处理数据之后,我收到一条消息。Ajax正常工作。我认为问题出在hook\u mail或drupal\u mail函数中。您是否尝试在函数中的任何地方打印“ok”来猜测它在哪里失败了?你在本地机器上工作吗?如果是的话,你是否安装了一个虚拟邮件服务器来发送真正的邮件?它不会失败,我已经尝试了我所知道的一切,但没有任何提示,没有错误,没有警告,但是这个被屏蔽的钩子不发送邮件。你为什么在钩子邮件中使用邮件功能?