WAMP / Drupal 7 / SMTP模块:无法使用drupal_mail发送邮件,但“测试邮件”可以发送

时间:2014-03-17 17:27:09

标签: php email drupal drupal-7 smtp

我使用Gmail帐户设置(smtp.gmail.com:465)。

我正在使用SMTP module,设置完成后,可以(即Gmail没有问题)发送管理页面中提供的“测试电子邮件”。

但是,尝试调用此函数:

drupal_mail('casabaca_s3s', FORM_ALIAS_CONTACTO, 'luisfmasuelli@gmail.com', language_default(), array());

这是在这里实现的(hook impl。):

function casabaca_s3s_mail($key, &$message, $params)
{
    $data = array();
    foreach($params as $k => $v)
    {
        $data['${'.$k.'}'] = $v;
    }

    $messages = array(
        FORM_ALIAS_CONTACTO => array(
            'subject' => '',
            'html.message' => <<<MESSAGE
MESSAGE
        ),
        FORM_ALIAS_COTIZAR => array(
            'subject' => '',
            'html.message' => <<<MESSAGE
MESSAGE
        ),
        FORM_ALIAS_TALLERES => array(
            'subject' => '',
            'html.message' => <<<MESSAGE
MESSAGE
        ),
        FORM_ALIAS_EXONERADOS => array(
            'subject' => '',
            'html.message' => <<<MESSAGE
MESSAGE
        ),
        FORM_ALIAS_AVALUO => array(
            'subject' => '',
            'html.message' => <<<MESSAGE
MESSAGE
        ),
        FORM_ALIAS_MANTENIMIENTO => array(
            'subject' => '',
            'html.message' => <<<MESSAGE
MESSAGE
        ),
    );
    $base_message = $messages[$key];
    $message['body']['plain'] = '<html><body>HTML version of "test message"</body></html>'; //drupal_wrap_mail(drupal_html_to_text(strtr($base_message['html.message'], $data)));
    $message['body']['html'] = 'text version of "test messages"'; //drupal_wrap_mail(strtr($base_message['html.message'], $data));
    $message['subject'] = 'test subject';//$base_message['subject'];
    $headers = array(
        'MIME-Version' => '1.0',
        'Content-Type' => 'multipart/alternative; charset=UTF-8;',
        'Content-Transfer-Encoding' => '8Bit',
        'X-Mailer' => 'Drupal'
    );
    foreach ($headers as $key => $value) {
        $message['headers'][$key] = $value;
    }
}

不起作用。返回的消息如下:

  

No se pudo enviar elcorreoelectrónico。 Contacte conlaadministracióndelsitio si persiste el problema。

(西班牙语的消息。可能的英文信息可能是 - 我不知道因为我总共n00b并且只使用西班牙语Drupal 7版本 - :无法发送电子邮件。如果发送电子邮件,请联系。问题仍然存在)。

问:我搞砸了什么? 假设:我认为这是在我的代码中,但我复制了大部分内容并试图理解它

目标:发送多个替代电子邮件(请注意,目前这些选项只是一个存根,未实现),具体取决于六种可能性(每种都有不同的形式,不同的特征,但目前它们都有假体和主体)。

前提条件:Drupal 7,PHP 5.4.16,SMTP模块7.x-1.0。

修改:对于那些不确定“测试电子邮件”是什么的人,请参阅Here了解详细示例。

2 个答案:

答案 0 :(得分:0)

发现它......有很多问题。

  1. hook_mail实现位于.module中尚未包含(必需)的文件中,因此无法找到(因此,消息为空,并触发了错误)。
  2. 使用['plain']和['html']作为消息元素不会创建multipart / alternative。必须明确地创建它(即边界)。
  3. 缓存有一些东西,因为没有绕过mail()(它是测试电子邮件,而不是实际的电子邮件)。
  4. (摘要:第8层错误)。

答案 1 :(得分:0)

在某些情况下,问题可能出在mail_system变量中。它应该设置为SmtpMailSystem。 某些模块(如Mail SystemMime Mail)会对其进行更改。

另请参阅drupal_mail_systemdrupal_mail