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(…);