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(…);
JFinal项目发送邮件——jfinal-mail-plugin的更多相关文章
- jbolt插件创建jfinal项目
Jfina官方文档:https://www.jfinal.com/doc JFinal由Handler.Interceptor.Controller.Render.Plugin五大部分组成,且JFin ...
- JFinal 项目 在tomcat下部署
原文:http://my.oschina.net/jfinal/blog/353062 首先明确一下 JFinal 项目是标准的 java web 项目,其部署方式与普通 java web 项目没有任 ...
- 初尝 JFinal 项目(一)
temp1: JFinal项目与JAVA项目类似,有属性方法.操作方法.Sql语句操作.jdbc.配置文件 对比:|| JAVA: Bean / Srv(Server) / SqlMap / jdbc ...
- IDEA下利用Jrebel插件实现JFinal项目main方法【热加载】
IDEA下利用Jrebel插件实现JFinal项目main方法[热加载] Jrebel破解办法 https://github.com/ilanyu/ReverseProxy/releases/tag/ ...
- linux 环境下tomcat中部署jfinal项目
tomcat中部署jfinal项目 问题现象如下图 问题描述: 我在自己的windows7系统上tomcat下面跑这个项目没有任何问题吗,但是当我把项目上传到linux服务器上的tomcatwebap ...
- 投资20万研发的JFinal项目《旅游线路营销管理系统》准备公开课中
18年初上线了一套旅游营销管理系统,目前给几个合作客户内测试用,是基于JFinal研发的一套旅游行业旅游线路批发零售系统(SAAS)版. 系统终端: PC后台管理分:总部.线路批发商.旅行社门店.个人 ...
- JFinal项目eclipse出现Unknown column 'createtime' in 'order clause' 的错误
JFinal项目eclipse出现Unknown column 'createtime' in 'order clause' 的错误,在本次项目中的原因是我的表中的字段信息中创建时间的字段是creat ...
- JFinal项目eclipse出现the table mapping of model: com.gexin.model.scenic.Scenic not exists or the ActiveRecordPlugin not start.
JFinal项目eclipse出现the table mapping of model: com.gexin.model.scenic.Scenic not exists or the ActiveR ...
- jfinal项目报java.lang.ClassNotFoundException: com.jfinal.core.JFinalFilter
在eclipse中启动jfinal项目时,项目报错如下:首先:右击项目–>Build Path–>Source查看Default output folder如果是目录/WEB-INF/cl ...
随机推荐
- [BZOJ1543] 生成树计数 (Kruskal)
Description 给定一个连通的带边权的图(允许自环和重边),求不同的最小生成树个数.两个生成树不同当它们所用的边的序号不同,换句话说,重边算多次. Input 第一行n,m,表示点数和边数(1 ...
- JBox使用详解
插件说明 - jBox 是一款基于 jQuery 的多功能对话框插件,能够实现网站的整体风格效果,给用户一个新的视觉享受. 运行环境 - 兼容 IE6+.Firefox.Chrome.Safari.O ...
- springboot+springmvc+mybatis项目整合
介绍: 上篇给大家介绍了ssm多模块项目的搭建,在搭建过程中spring整合springmvc和mybatis时会有很多的东西需要我们进行配置,这样不仅浪费了时间,也比较容易出错,由于这样问题的产生, ...
- 解决新版的vue-cli后无法通过ip访问vue项目
今天遇到个问题,之前一直没遇到过,通过vue-cli脚手架搭建的项目,只能通过localhost访问,不能通过IP地址访问. 这是由 webpack 导致的,2017年11月12日的时候 webpac ...
- sklearn包中有哪些数据集你都知道吗?
注册了博客园一晃有3个月了,同时接触机器学习也断断续续的算是有1个月了.今天就用机器学习神器sklearn包的相关内容作为我的开篇文章吧. 本文将对sklearn包中的数据集做一个系统介绍,并简单说一 ...
- Mycat 分片规则详解--一致性hash分片
实现方式:基于hash算法的分片中,算法内部是把记录分片到一种叫做"bucket"(hash桶)的内部算法结构中的,然后hash桶与实际的分片节点一一对应,从此实现了分片.路由的功 ...
- Maven-05:插件目标
在学习插件和生命周期的绑定关系之前,必须先了解插件目标(plugin goal). 我们知道,Maven的核心仅仅定义了抽象的生命周期,具体的任务是交由插件完成的,插件以独立的构件形式存在,因此Mav ...
- vue+webpack+element-ui+git
webpack.config.jsconst { resolve } = require('path') const webpack = require('webpack') const HtmlWe ...
- Algorithm --> 顺序打印矩阵
顺序打印矩阵 思路 参考代码 #include <iostream> using namespace std; ], int row, int col) { || col < ) r ...
- cisco交换机实现端口聚合
0x00前言: 今天听老师讲端口聚合,为了方便日后复习故此有 了本篇随笔. 0x01准备工具: cisco模拟器 0x02:目录 为什么要用端口聚合? 广播风暴? 扩展:SMTP 0x03正文: 为什 ...