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

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

drupal7 smtp+mimemail+mailsystem 实现发送html邮件的更多相关文章

  1. SMTP 通过 ssh 通道发送垃圾邮件

    通过SSH隧道传输SMTP 根据设计,我们不允许校外机器使用我们的SMTP服务器.如果我们允许它,我们将允许任何和所有使用我们的SMTP服务器来分发垃圾邮件.但是也可以通过我们的SMTP服务器发送邮件 ...

  2. .Net Mail SMTP 发送网络邮件

    刚刚迈入"开发"的行列 一直有一个想法 我什么时候能给我庞大的用户信息数据库给每一位用户邮箱发送推荐信息呢? 刚迈入"编程两个月的时间" 我采用 SMTP 发送 ...

  3. 九、Python发送QQ邮件(SMTP)

    看了廖雪峰老师的教程: 一封电子邮件的旅程就是 发件人 -> MUA -> MTA -> MTA -> 若干个MTA -> MDA <- MUA <- 收件人 ...

  4. python3:利用SMTP协议发送QQ邮件+附件

    转载请表明出处:https://www.cnblogs.com/shapeL/p/9115887.html 1.发送QQ邮件,首先必须知道QQ邮箱的SMTP服务器 http://service.mai ...

  5. 在Delphi中使用indy SMTP发送gmail邮件[转]

    在Delphi中使用indy SMTP发送gmail邮件[转] 2012-01-01 22:44:30|  分类: Delphi |  标签: |举报 |字号大中小 订阅     在Delphi中发送 ...

  6. Oracle PLSQL通过SMTP发送E-MAIL邮件代码

    登录到SMTPserver发送邮件,支持HTML CREATE OR REPLACE PROCEDURE send_mail(        p_recipient VARCHAR2, -- 邮件接收 ...

  7. C#发送Outlook邮件(仅SMTP版本)

    先表明Outlook的参数:网址:https://support.office.com/zh-cn/article/Outlook-com-%E7%9A%84-POP%E3%80%81IMAP-%E5 ...

  8. CI框架使用PHPmail插件发送QQ邮件:

    有助请顶,不好请评.0:33 2016/3/12CI框架使用PHPmail插件发送QQ邮件:发送成功,不过修改了主机参数,还包含了一个phpmail中的一个另外的文件,详见下方:参见:http://c ...

  9. 如何利用sendmail发送外部邮件?

    在写监控脚本时,为了更好的监控服务器性能,如磁盘空间.系统负载等,有必要在系统出现瓶颈时,及时向管理员进行报告.在这里通常采用邮件报警,同时,邮件设置为收到邮件,即向指定手机号码发送短信.这样可以实现 ...

随机推荐

  1. Feign 系列(03)Feign 工作原理

    目录 Feign 系列(03)Feign 工作原理 1. Feign 是如何设计的 2. Feign 动态代理 2.1 ReflectiveFeign 构建 2.2 生成代理对象 2.3 Method ...

  2. WebStorage篇

    [WebStorage篇] 用户登录状态.计数器或者小游戏等,但是又不希望用到数据库,就可以利用Web Storage技术将数据存储在用户浏览器中. Web Storage是一种将少量数据存储在客户端 ...

  3. es6注意点

    补救方法: 详情:http://es6.ruanyifeng.com/#docs/array 取出文本内容 实现深拷贝 jq实现不完全深拷贝 jQuery.extend = jQuery.fn.ext ...

  4. GetModuleHandleW 分析

    首先查询MSDN,可以清楚地看到 位于kernel32 dll 里面. 有目标就好办,找到这个dll,然后,开工,进入IDA. 跳啊 就到下面那块了. 遗憾的是...显然不是这里阿,实际上下一块调用的 ...

  5. 用sql语句合并工作表

    Sub 工作表合并() f = Application.GetOpenFilename(filefilter:="excel文件,*xlsx", Title:="请选择文 ...

  6. boost asio tcp 多线程

    common/pools.h // common/pools.h #pragma once #include <string> #include <boost/pool/pool.h ...

  7. ES6 简化对象写法

    简化的对象写法 * 省略同名的属性值 * 省略方法的function <!DOCTYPE html> <html lang="en"> <head&g ...

  8. Dart编程数字Number

    Dart数字可以分为: int - 任意大小的整数. int 数据类型用于表示整数. double -64位(双精度)浮点数,由IEEE 754标准规定. 在 double 数据类型用于表示小数 in ...

  9. Java中的线程Thread方法之---suspend()和resume()

    前篇说到了Thread中的join方法,这一篇我们就来介绍一下suspend()和resume()方法,从字面意义上可以了解到这两个方法是一对的,suspend()方法就是将一个线程挂起(暂停),re ...

  10. NX二次开发-获取尺寸的附加文本UF_DRF_ask_appended_text

    #include <uf.h> #include <uf_drf.h> #include <uf_obj.h> #include <uf_part.h> ...