Php 无法使用hook\u mail在Drupal 7中发送电子邮件
请告诉我哪里有问题,我试着发电子邮件,但没用。我看到的一个错误是firebug控制台中的“500内部服务器错误”。我使用AJAX访问执行drupal_mail(…)的函数。请帮我找个人解释一下,如果它不起作用,请提前谢谢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'
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”来猜测它在哪里失败了?你在本地机器上工作吗?如果是的话,你是否安装了一个虚拟邮件服务器来发送真正的邮件?它不会失败,我已经尝试了我所知道的一切,但没有任何提示,没有错误,没有警告,但是这个被屏蔽的钩子不发送邮件。你为什么在钩子邮件中使用邮件功能?