drupal7 smtp+mimemail+mailsystem 实现发送html邮件

1.下载三个模块

  smtp: https://www.drupal.org/project/smtp

  mimemail: https://www.drupal.org/project/mimemail

  mailsystem: https://www.drupal.org/project/mailsystem

  启用如下模块

     

2.配置一下mailsystem /admin/config/system/mailsystem

  点开NEW CLASS, format()方法选择MimeMailSystem, mail()选择SmtpMailSystem;这样就可以使用邮件使用mimemail的格式(支持html),而在发送邮件时,使用的是SMTP协议(由于我们一般用第三方的smtp服务器,是要验证用户信息,smtp模块正好有这个功能),点击最下方的保存后可以进行一步操作了。

  

    将上面三项都选择刚生成的新类(MimeMailSystem_SmtpMailSystem),如果没有开启Mime Mail Example模块,第三项是没有,点下最后的保存按钮。

3.配置一下smtp  /admin/config/system/smtp

   按需配置下smtp模块,SMTP AUTHENTICATION这一块填正确一般就没什么问题了。

调试那边最好选择Log everything ,这样好知道哪里出了问题;另外如果要测试是否配置成功,请用MimeMail Example来测试(/example/mimemail_example),smtp模块测试一般会发送失败,有兴趣的可以探究下原因。

4.自定义一个发邮件的方法

/**
 * @param $to
 * @param $params ["subject" => '', 'body' => '', 'header' => ['Cc' => '', 'Bcc'=> '']]
 * @param string $from
 * @param string $key
 * @return bool
 */
function 模块名_send_mail($to, $params, $from = 'default_from', $key = 'common') {
    $module = '模块名';
    if ($from == 'default_from') {
        module_load_include('inc', 'mimemail');
        $from = mimemail_address(array(
            'name' => variable_get('mimemail_name', '又起风了'),
            'mail' => variable_get('mimemail_mail', 'xxxx'),
        ));
    }
    $language = language_default();
    $send = TRUE;
    $result = drupal_mail($module, $key, $to, $language, $params, $from, $send);
    if ($result['result'] == TRUE) {
        return true;
    }
    else {
        return false;
    }
}

/**
 * 这一步很重要,不然会报body为空
 * Implements hook_mail().
 */
function 模块名_mail($key, &$message, $params) {
    $message['subject'] = $params['subject'];
    $message['body'][] = $params['body'];
}

  

附:可以在主题下新建/css/mail.css 来控制html邮件的样式;邮件模板放在/templates/mail/mimemail-message.tpl.php,如果要多种模板,可以是这种格式mimemail-message--模块名--key值.tpl.php

以上原创,转载请附出处。

原文地址:https://www.cnblogs.com/barefoot/p/9670196.html