JFinal项目发送邮件——jfinal-mail-plugin

JFianl框架:

JFinal 是基于 Java 语言的极速 WEB + ORM 框架,其核心设计目标是开发迅速、代码量少、学习简单、功能强大、轻量级、易扩展、Restful。在拥有Java语言所有优势的同时再拥有ruby、python、php等动态语言的开发效率!为您节约更多时间,去陪恋人、家人和朋友 :)

JFinal框架有自己的邮件发送插件——jfinal-mail-plugin,支持发送普通邮件,模板邮件,还支持发送附件,jfinal-mail-plugin还可以配置多邮件发送数据源。

JFinal项目发送邮件插件:jfinal-mail-plugin

JFinal官方地址:http://www.jfinal.com/project/33

jfinal-mail-plugin是jfinal的一个邮件发送插件,支持发送普通邮件、与附件邮件,邮件内容支持通过模板生成,同时还支持多个邮件发送源,她继承了Jfinal核心目标“开发迅速,代码量少,学习简单。。。”,只需简单的2行代码即可实现邮件发送!为您节约更多时间,去陪恋人、家人和朋友 :) ,核心代码通过spring-context-support包的邮件模块移植,JavaMailSender对象如何发送邮件可直接参照Spring的邮件发送文档。

码云源码地址:https://gitee.com/xiyoufang/jfinal-mail-plugin

以上是该项目的源码,使用时直接调用就可以。

使用方法:

和使用JFinal一样,只需要在pom文件中引入jfinal-mail-plugin即可。

在pom中添加jfinal-mail-plugin:

    <dependency>
      <groupId>cn.fsdev</groupId>
      <artifactId>jfinal-mail-plugin</artifactId>
      <version>3.0</version>
    </dependency>

添加邮件配置文件:

#邮箱HOST
host=smtp.qq.com
#协议
protocol=smtp
#端口
port=465
#发送邮箱
username=**@qq.com
#密码
password=**
#权限认证
mail.smtp.auth=true
#超时时间
mail.smtp.timeout=5000
#是否是ssl
mail.smtp.ssl.enable=true

项目启动时启动jfinal-mail-plugin插件:

me.add(new MailPlugin(PropKit.use("mail.properties").getProperties()));

发送普通邮件:

    public void senmail(){
        System.out.println("发送邮件:");
        try{
            MailKit.send("**@qq.com", null, "邮件标题", "邮件内容");
            System.out.println("成功");
        }catch (Exception e){
            System.out.println("失败");
            e.printStackTrace();
        }
    }

我们可以看到邮件发送工具 MailKit 的代码:

package com.jfplugin.mail;

import java.io.File;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.jfplugin.mail.core.JavaMailSender;

/**
 * 发送邮件工具
 * @author farmer
 *
 */
public class MailKit {
    
    static Map<String, MailPro> proMap = new HashMap<String, MailPro>();
    
    static MailPro mailPro = null;
    
    /**
     * 
     * @param configName
     * @param mailPro
     */
    static void init(String configName , MailPro mailPro){
        if(proMap.get(configName) != null){
            throw new RuntimeException(configName+"配置的Mail已经存在!");
        }
        proMap.put(configName, mailPro);
        if(MailPlugin.MAIN_CONFIG.equals(configName)){
            MailKit.mailPro = mailPro;
        }
    }
    
    /**
     * 
     * @param configName
     * @return
     */
    public static MailPro use(String configName){
        MailPro mailPro = proMap.get(configName);
        if(mailPro == null){
            throw new RuntimeException(configName+"配置的Mail不存在!");
        }
        return mailPro;
    }
    
    /**
     * 发送邮件
     * @param to
     *     收件人
     * @param cc
     *     发件人
     * @param subject
     *     主题
     * @param text
     *     内容
     */
    public static void send(String to,List<String> cc,String subject,String text){
        mailPro.send(to, cc, subject, text);
    }
    
    /**
     * 发送邮件
     * @param to
     *     收件人
     * @param cc
     *     发件人
     * @param subject
     *     主题
     * @param text
     *     内容
     * @param attachments
     *     附件
     * 
     */
    public static void send(String to,List<String> cc,String subject,String text,List<File> attachments){
        mailPro.send(to, cc, subject, text,attachments);
    }
    
    /**
     * 
     * @param to
     * @param cc
     * @param subject
     * @param viewpath
     * @param dataMap
     */
    public static void send(String to,List<String> cc ,String subject,String viewpath ,Map<String, Object> dataMap){
        mailPro.send(to, cc, subject, viewpath , dataMap);
    }
    
    /**
     * 
     * @param to
     * @param cc
     * @param subject
     * @param viewpath
     * @param dataMap
     * @param attachments
     */
    public static void send(String to,List<String> cc ,String subject,String viewpath ,Map<String, Object> dataMap,List<File> attachments){
        mailPro.send(to, cc, subject, viewpath , dataMap , attachments);
    }

    /**
     * 获取JavaMailSender
     * @return
     * 当前实例的JavaMailSender,用来定制化更复杂的邮件发送需求
     */
    public static JavaMailSender getMailSender(){
        return mailPro.getMailSender();
    }
    
}

从 MailKit 的代码中我们可以看到他的多种形式的邮件发送,只是参数的不同。

jfinal-mail-plugin配置多邮件数据源:

不同的邮件源写在不同的properties配置文件中。

然后在启动插件时指定发送源:

me.add(new MailPlugin(“mail2”,PropKit.use(“mail2.properties”).getProperties()));

最后在MailKit发送邮件时指定发送源:

MailKit.use(“mail2”).send(…);

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏Java3y

从零开始写项目第二篇【登陆注册、聊天、收藏夹模块】

登陆模块目标 我要将其弄成类似的登陆,功能是要比较完善的。 ? 本来我是想做一步写一步的,但是发现这样文章就会太乱,因为要改的地方太多了。前面写过的,后边就被修...

1.2K80
来自专栏*坤的Blog

公司web安全等级提升

公司的一个web数据展示系统,本来是内网的,而且是一个单独的主机,不存在远程控制的问题,所以之前并没有考虑一些安全相关的测试.但是国调安全检查的需要添加这样子的...

23640
来自专栏岑玉海

Spark源码系列(一)spark-submit提交作业过程

前言 折腾了很久,终于开始学习Spark的源码了,第一篇我打算讲一下Spark作业的提交过程。 ? 这个是Spark的App运行图,它通过一个Driver来和集...

55060
来自专栏酷玩时刻

支付宝Wap支付你了解多少?

为了方便开发者生成一对RSA密钥支付宝提供一键生成工具,具体如何生成与配置密钥详见签名专区。

51320
来自专栏闻道于事

quartz定时任务,已过期的内容自动下线

概念: Quartz是一个开源的作业调度框架,可以让计划的程序任务一个预定义的日期和时间运行。Quartz可以用来创建简单或复杂的日程安排执行几十,几百,甚至是...

57850
来自专栏Android 研究

OKHttp源码解析(九):OKHTTP连接中三个"核心"RealConnection、ConnectionPool、StreamAllocation

RealConnection是Connection的实现类,代表着链接socket的链路,如果拥有了一个RealConnection就代表了我们已经跟服务器有了...

96660
来自专栏NetCore

Struts原理与实践

一、JDBC的工作原理 Struts在本质上是java程序,要在Struts应用程序中访问数据库,首先,必须搞清楚Java Database Connect...

24280
来自专栏Linux驱动

15.linux-LCD层次分析(详解)

如果我们的系统要用GUI(图形界面接口),这时LCD设备驱动程序就应该编写成frambuffer接口,而不是像之前那样只编写操作底层的LCD控制器接口。 什么是...

29960
来自专栏Netkiller

Linux磁盘分区加密

本文节选自《Netkiller Cryptography 手札》 出处: http://netkiller.github.io/cryptography/ind...

50840
来自专栏LuckQI

学习Java基础知识,打通面试关~十三锁机制

15850

扫码关注云+社区

领取腾讯云代金券