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
以上原创,转载请附出处。