一、概要

kintone标准功能里已经包含了发送通知的功能,通常我们给kintone用户发送通知的时候,很少用到邮件。但是也有某些场合,我们需要给kintone用户以外的人发送邮件。所以这次我们使用插件,来发送邮件。

1、申请SendCloud帐号

kintone 本身不带有E-mail的功能,所以我们可以使用外部的产品。这次我们来尝试下SendCloud。

https://sendcloud.sohu.com/

点击首页里的注册按钮,就会出现下面这样的注册页面。

2、获取API key

SendCloud是收费的,但是有每天10封邮件的免费额。

注册成功进入系统后,我们会看到已经有一个测试帐号API_USER被创建了。

当然如果您想的话,也可以自己新创建一个^^

在SendCloud里,发送邮件时主要验证API_USER和API_KEY的值组合。

所以,我们可以点击 “更多API_USER和API_KEY设置” 按钮,进入具体的设置页面。

点击 “生成新的API_KEY”后,会弹出对话框。

选择您想要的用户名,然后输入密码和验证码后,点击 ”确认” 键后,就会自动生成新的API_KEY。

需要说明的是:

  1. 在15分钟内,原API_KEY和新API_KEY均有效,15分钟后原API_KEY就失效了。

  2. 另外,API_KEY将永久无法二次显示,所以需要大家截图或复制,并妥善保管好API_KEY。

好了,SendCloud端的准备我们做好了。

二、插件准备

这次我们使用插件来发送邮件。关于插件的基本开发方法,在下面的这篇文章里,做了比较详细的解说。

大家可以关注这篇文章:

kintone 插件开发流程

1、文件构成

2、manifest.json

给插件设置了中日英的文言。

config.js

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

jQuery.noConflict();

(function($, PLUGIN_ID) {

    'use strict';

    $(document).ready(function() {

        var terms = {

            'ja': {

                'apiUser''SendCloudのapiUser',

                'apiKey''SendCloudのapiKey',

            },

            'en': {

                'apiUser''SendCloud apiUser',

                'apiKey''SendCloud apiKey',

            },

            'zh': {

                'apiUser''SendCloud的apiUser',

                'apiKey''SendCloud的apiKey',

            }

        };

        // To switch the display by the login user's language

        var lang = kintone.getLoginUser().language;

        var i18n = (lang in terms) ? terms[lang] : terms['en'];

        var configHtml = $('#sendcloud-plugin-config').html();

        var tmpl = $.templates(configHtml);

        $('div#sendcloud-plugin-config').html(tmpl.render({'terms': i18n}));

        var config = kintone.plugin.app.getConfig(PLUGIN_ID);

        if (config && config.apiUser && config.apiKey) {

            var apiUser = config.apiUser;

            $('#sendcloud-plugin-api-user').val(apiUser);

            var apiKey = config.apiKey;

            $('#sendcloud-plugin-api-key').val(apiKey);

        }

        // Click "Save" to enter the settings

        $('#sendCloud-plugin-submit').click(function() {

            var apiUser = $('#sendcloud-plugin-api-user').val();

            var apiKey = $('#sendcloud-plugin-api-key').val();

            if (!apiUser) {

                alert("请输入apiUser的值");

            }

            if (!apiKey) {

                alert("请输入apiKey的值");

            }

            var config = {

                'apiUser': apiUser,

                'apiKey': apiKey

             };

             kintone.plugin.app.setConfig(config);

        });

        // Click "Cancel" to return to the previous page

        $('#sendCloud-plugin-cancel').click(function() {

            if (window.confirm('Are you sure to cancel this setting?')) {

                history.back();

            else {

                return;

            }

        });

    });

})(jQuery, kintone.$PLUGIN_ID);

我们使用了中日英三个语言,可以自由切换

3、用户页面开发

用户页面,我们使用了SendCloud的API。SendCloud的API式样可以参考下面的链接:

发送相关 - SendCloud 文档中心 - SendCloud 文档中心

例)

POST http://api.sendcloud.net/apiv2/mail/send

desktop.js

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

jQuery.noConflict();

(function($, PLUGIN_ID) {

    'use strict';

    // create form

    var createFormData = function(data) {

        var array = [];

        for (var key in data) {

            var val = data[key];

            if ($.isArray(val)) {

                for (var i = 0; i < val.length; i++) {

                    array.push(key + '[]=' + encodeURIComponent(val[i]));

                }

            else {

                array.push(key + '=' + encodeURIComponent(val));

            }

        }

        return array.join('&');

    };

    window.kintonePlugin = {};

    window.kintonePlugin.sendcloud = {

        sendMail: function(to, cc, bcc, mailFrom, subject, plain, html, callback, errback) {

            var data = {};

            var config = kintone.plugin.app.getConfig(PLUGIN_ID);

            if (config && config.apiUser && config.apiKey) {

                data.apiUser = config.apiUser;

                data.apiKey = config.apiKey;

            }

            data.to = to;

            if (cc) {

                data.cc = cc;

            }

            if (bcc) {

                data.bcc = bcc;

            }

            data.from = mailFrom;

            data.subject = subject;

            data.plain = plain;

            if (html) data.html = html;

            var formData = createFormData(data);

            var url = 'http://api.sendcloud.net/apiv2/mail/send';

            kintone.plugin.app.proxy(PLUGIN_ID, url, "POST", {'Content-Type''application/x-www-form-urlencoded'}, formData, function(resp, status, header) {

                if (callback) {

                    callback.call(this, resp, status, header);

                }

            }, function(error) {

                if (errback) {

                    errback.call(this, error);

                }

            });

        }

    };

})(jQuery, kintone.$PLUGIN_ID);

4、代码sample:

sendcloud_kin.plugin

三、试一下

将下载好的安装包导入到kintone的系统管理页面。

在待安装的应用的设置页面上安装插件,这里我任意找了个自己环境里的应用。

“kintone活动日历插件的作成范例【后篇】 ”的教程里介绍了插件的安装方法和动作确认,大家可以参考一下。

装好插件后,打开插件的设置页面。

在插件设置页面输入SendCloud的apiUser和apiKey。

点击 “OK” 按钮,保存。

另外在 应用设置 -> “通过JavaScript/CSS自定义” 里加上自定义js文件(文件名可以任意取),具体方法可以参考:

创建好的文件上传到kintone

自定义js请查看:使用SendCloud API来制作发送邮件的插件

四、总结

这次我们在插件设置页面里输入apiUser和apiKey的方式来发送邮件。但是实际使用的时候,由于在浏览器端可以看到  apiUser和apiKey,并不是很安全。所以我们不是很推荐用这种方式来发送邮件。

使用SendCloud API来制作发送邮件的插件相关推荐

  1. sketch制作Android动画,如何直接用Sketch制作动画|Sketch插件|

    原标题:如何直接用Sketch制作动画|Sketch插件| 本期的sketch插件来为大家讲解如何制作动画,看来看看马克笔设计留学的MUzi老师的教程吧! 安装 1.下载并解压 Anima Tooki ...

  2. 制作一个chrome插件

    制作一个chrome插件 要做两方面的准备 文件准备 在文件夹中,必需的两个文件 manifest.json 用于配置文件 index.html 插件的界面效果 manifest.json的内容 { ...

  3. 闲云野鹤:吃鸡(一)之场景制作:使用GPU instancing方式制作刷草插件

    用GPU instancing方式制作刷草插件(unity版本8.2.2) 先上最终效果图(欢迎加我qq交流:358641634): 十种草 混刷生成比较自然的场景(带阴影.风力.草可见距离可调) 插 ...

  4. php 设计api,PHP制作API接口

    需要单一入口文件,可以使用autoload来加载 //获取get参数 $m = !empty($_GET['m'])?$_GET['m']:'Index'; $a = !empty($_GET['a' ...

  5. 易语言取java路径模块_易语言API模块制作进程取程序路径

    易语言API模块制作进程取程序路径,提高进程的PID获取程序的所在路径. 进程_取程序路径 1.CreateToolhelp32Snapshot 快照句柄 = CreateToolhelp32Snap ...

  6. 使用OLAMI自然语言开放平台提供的API接口制作自己的语音助手

    告诉你如何使用OLAMI自然语言理解开放平台API制作自己的智能对话助手 我们经常在电影中看到机器和人对答如流,随着越来越多自然语言开放平台的出现,IT爱好者制作一个自己的APP或者小玩具等逐渐可以变 ...

  7. 微信小程序+OLAMI自然语言API接口制作智能查询工具--快递、聊天、日历等

    微信小程序最近比较热门,再加上自然语义理解也越来越被人关注,于是我想赶赶潮流,做一个小程序试试.想来想去快递查询应该是一种比较普遍的需求. 如果你也在通过自然语言接口做点什么,希望我的这篇博客能帮到你 ...

  8. 511遇见易语言API模块制作进程取程序路径

    易语言API模块制作进程取程序路径,提高进程的PID获取程序的所在路径. 视频链接: 511遇见易语言模块API教程 进程_取程序路径 1.CreateToolhelp32Snapshot 快照句柄 ...

  9. 调用百度地图API接口制作热力图

    调用百度地图API接口制作热力图 Python学了很久,也做了一些机器学习的demo,利用matolotlib库做过一些可视化.今天呢想尝试做一下热力图.先PO一张我最终效果图. 因为数据原因,效果一 ...

  10. api如何使用_使用插件扩展Qt自身

    如何创建Qt插件? 本篇文章只能回答一半,如何创建扩展Qt自身的插件. Qt提供了两种用于创建插件的API: 用于编写Qt自身扩展的高级API:自定义数据库驱动程序,图像格式,文本编解码器,自定义样式 ...

最新文章

  1. C++ 和 Java,你选哪个? | 每日趣闻
  2. select下拉框兼容写法
  3. 神策数据颜含:流量见顶与监管趋严的双重压力下,大文娱产品如何突围?
  4. 视觉盛宴 HTML5 3D动画应用赏析
  5. 记录程序人生2020.8.11
  6. 力扣93. 复原 IP 地址(JavaScript)
  7. 独立成分分析(Independent Component Analysis)(ICA)(主元分解)
  8. Access数据库引擎
  9. Opencv项目实战:05 物体检测
  10. 知乎热议国家何时整治程序员的高薪现象,网友:用命和头发换的钱都被人眼红...
  11. @interface List
  12. 微信读书产品分析报告(附:信息结构图、功能结构图、产品结构图)
  13. 不学c语言能学mysql吗_学C语言难不难?以及简说数据库
  14. 大数据实战之Spark-Flume-Kafka-idea-Mysql实时处理数据并存储
  15. MobRecon: Mobile-Friendly Hand Mesh Reconstruction from Monocular Image阅读笔记
  16. 数据挖掘中的数据预处理方法总结
  17. Android模拟器下重力感应应用的开发-Simulator的使用
  18. android 仿qq好友动态,Android UI仿QQ好友列表分组悬浮效果
  19. 非线性控制5——扰动观测器
  20. MySQL基础知识(1)

热门文章

  1. python 汉字 简繁体 转换方法
  2. 聊天机器人 NLP(初识 学习思路)
  3. 要了命了,我亲自包了20000个红包送你
  4. python实现简易数独小游戏
  5. Unity为人物模型 添加动效Animator
  6. 华为meta30浏览器不兼容flex布局解决方案-加前缀
  7. Photoshop从入门到放弃
  8. 解决图片闪烁问题(雪碧图)
  9. 基于单片机的模拟电磁曲炮设计
  10. D3D9学习笔记之基础几何体的深入应用(一)