1.封装邮件接收地址MODEL和邮件信息MODEL

package com.sicdt.jnzxgzc.common.mail.model;import java.io.Serializable;
/*** * <br>类 名: MailAddress * <br>描 述: InternetAddress的封装类 * <br>作 者: shizhenwei * <br>创 建: 2017年8月4日 * <br>版 本: v1.0.0 * <br>* <br>历 史: (版本) 作者 时间 注释*/
public class MailAddress implements Serializable{/** **/private static final long serialVersionUID = -2636919632818478505L;private String address;//邮箱地址private String personal;//邮箱显示名称public MailAddress() {}public MailAddress(String address) {this.address = address;}public MailAddress(String address, String personal) {this.address = address;this.personal = personal;}public String getAddress() {return address;}public void setAddress(String address) {this.address = address;}public String getPersonal() {return personal;}public void setPersonal(String personal) {this.personal = personal;}@Overridepublic String toString() {return "AddressModel{" + "address='" + address + '\'' + ", personal='" + personal + '\'' + '}';}
}

package com.sicdt.jnzxgzc.common.mail.model;import java.io.Serializable;
import java.util.Arrays;/*** * <br>类 名: MailMessage * <br>描 述: 邮寄信息类* <br>作 者: shizhenwei * <br>创 建: 2017年8月4日 * <br>版 本: v1.0.0 * <br>* <br>历 史: (版本) 作者 时间 注释*/
public class MailMessage implements Serializable {/** **/private static final long serialVersionUID = 1269256094401416828L;private String subject;//主题private String htmlText;//内容private String charset;//编码集private MailAddress[] to;//收件人地址private MailAddress[] cc;//抄送人地址private MailAddress[] bcc;//暗送人地址private MailAddress from;//发件人地址private MailAddress replyTo;//回复发件人地址public MailMessage() {}public MailMessage(String subject,String plainText, String htmlText,String charset,boolean multipart,MailAddress[] to, MailAddress[] cc,MailAddress[] bcc,MailAddress from,MailAddress replyTo) {this.subject = subject;this.htmlText = htmlText;this.charset = charset;this.to = to;this.cc = cc;this.bcc = bcc;this.from = from;this.replyTo = replyTo;}public String getSubject() {return subject;}public void setSubject(String subject) {this.subject = subject;}public String getHtmlText() {return htmlText;}public void setHtmlText(String htmlText) {this.htmlText = htmlText;}public String getCharset() {return charset;}public void setCharset(String charset) {this.charset = charset;}public MailAddress[] getTo() {return to;}public void setTo(MailAddress[] to) {this.to = to;}public MailAddress[] getCc() {return cc;}public void setCc(MailAddress[] cc) {this.cc = cc;}public MailAddress[] getBcc() {return bcc;}public void setBcc(MailAddress[] bcc) {this.bcc = bcc;}public MailAddress getFrom() {return from;}public void setFrom(MailAddress from) {this.from = from;}public MailAddress getReplyTo() {return replyTo;}public void setReplyTo(MailAddress replyTo) {this.replyTo = replyTo;}@Overridepublic String toString() {return "MailModel{" +"subject='" + subject + '\'' +", htmlText='" + htmlText + '\'' +", charset='" + charset + '\'' +", to=" + Arrays.toString(to) +", cc=" + Arrays.toString(cc) +", bcc=" + Arrays.toString(bcc) +", from=" + from +", replyTo=" + replyTo +"} ";}
}

2.邮件转换工具类(这一步可能会觉得多余,我只能讲为了以后升级扩展吧)

package com.sicdt.jnzxgzc.common.mail.util;import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.List;import javax.mail.internet.InternetAddress;import org.apache.commons.lang3.ArrayUtils;import com.sicdt.jnzxgzc.common.mail.model.MailAddress;/*** * <br>类 名: EmailConvert * <br>描 述: 邮件信息转换类* <br>作 者: shizhenwei * <br>创 建: 2017年8月4日 * <br>版 本: v1.0.0 * <br>* <br>历 史: (版本) 作者 时间 注释*/
public class EmailConvert {public static InternetAddress[] convert(MailAddress[] ams) throws UnsupportedEncodingException{if(ArrayUtils.isEmpty(ams)) {return new InternetAddress[0];}List<InternetAddress> ial = new ArrayList<>();for(MailAddress am : ams){ial.add(convert(am));}return ial.toArray(new InternetAddress[0]);}public static InternetAddress convert(MailAddress am) throws UnsupportedEncodingException{if(am == null) {return new InternetAddress();}return new InternetAddress(am.getAddress(), am.getPersonal());}
}

3.邮件发送工具

package com.sicdt.jnzxgzc.common.mail.util;import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Properties;import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;import org.apache.commons.lang3.ArrayUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.FileSystemResource;
import org.springframework.mail.javamail.MimeMessageHelper;import com.alibaba.druid.util.StringUtils;
import com.sicdt.jnzxgzc.common.mail.model.MailAddress;
import com.sicdt.jnzxgzc.common.mail.model.MailMessage;/*** * <br>类 名: MailUtils * <br>描 述: 邮件发送UTILS* <br>作 者: shizhenwei * <br>创 建: 2017年8月4日 * <br>版 本: v1.0.0 * <br>* <br>历 史: (版本) 作者 时间 注释*/
public class MailUtils {private static final Logger LOG = LoggerFactory.getLogger(MailUtils.class);static{InputStreamReader in;Properties prop = new Properties();try {in = new InputStreamReader(MailUtils.class.getClassLoader().getResourceAsStream("config.properties"),"UTF-8");prop.load(in);} catch (IOException e) {e.printStackTrace();}host=prop.getProperty("mail.smtp.host");username=prop.getProperty("mail.sender.username");password=prop.getProperty("mail.sender.password");timeout=prop.getProperty("mail.smtp.timeout");username_dispaly = prop.getProperty("mail.sender.username_dispaly");subject = prop.getProperty("mail.sender.subject");}public static String host;public static String username;public static String username_dispaly;public static String password;public static String timeout;public static String subject;public static void main(String[] args) throws MessagingException, IOException {MailMessage message = new MailMessage();/*** 收件人*/MailAddress t1 = new MailAddress("389262566@qq.com");MailAddress t2 = new MailAddress("954496177@qq.com");message.setTo(new MailAddress[]{t1,t2});/*** 回复人*/message.setReplyTo(t1);/*** 消息内容*/message.setHtmlText(readEmailTemplate("mail/mail_template_zwlxhsh.ts"));sendMail(message,true);}public static Session createSession() throws IOException{Properties mailprop=new Properties();mailprop.put("mail.host",host);mailprop.put("mail.transport.protocol", "smtp");mailprop.put("mail.smtp.auth", true);//使用java发送邮件5步骤//1.创建sesssionSession session=Session.getInstance(mailprop);//开启session的调试模式,可以查看当前邮件发送状态session.setDebug(true);return session;}public static Transport createTransport(Session session) throws MessagingException{//2.通过session获取Transport对象(发送邮件的核心API)Transport ts=session.getTransport();//3.通过邮件用户名密码链接
        ts.connect(username, password);return ts;}public static MimeMessage createMimeMessage(Session session) throws AddressException,MessagingException{//创建邮件对象MimeMessage mm=new MimeMessage(session);//设置发件人mm.setFrom(new InternetAddress(username));return mm;}public static void sendMail(MailMessage message) {sendMail(message, null);}public static void sendMail(MailMessage message, boolean html) {sendMail(message, null, true);}public static void sendMail(MailMessage message, File[] attachment) {sendMail(message, attachment, false);}public static void sendMail(MailMessage message, File[] attachment, boolean html) {try {Session  session = createSession();MimeMessage mm = createMimeMessage(session);if(StringUtils.isEmpty(message.getCharset())){message.setCharset("utf-8");}MimeMessageHelper helper = new MimeMessageHelper(mm, true, message.getCharset());helper.setTo(EmailConvert.convert(message.getTo()));if(null != message.getCc()){helper.setCc(EmailConvert.convert(message.getCc()));}if(null !=message.getBcc()){helper.setBcc(EmailConvert.convert(message.getBcc()));}if(null == message.getFrom()){MailAddress from = new MailAddress(username, username_dispaly);message.setFrom(from);}helper.setFrom(EmailConvert.convert(message.getFrom()));if(null == message.getReplyTo()){MailAddress replyTo = new MailAddress(username, username_dispaly);message.setReplyTo(replyTo);}helper.setReplyTo(EmailConvert.convert(message.getReplyTo()));if(StringUtils.isEmpty(message.getSubject())){message.setSubject(subject);}helper.setSubject(message.getSubject());helper.setText(message.getHtmlText(), html);if (!ArrayUtils.isEmpty(attachment)) {for (int i = 0; attachment != null && i < attachment.length; i++) {File file = attachment[i];FileSystemResource resource = new FileSystemResource(file);helper.addAttachment(file.getName(), resource);}}Transport ts = createTransport(session);ts.sendMessage(mm, mm.getAllRecipients());} catch (Exception e) {LOG.warn(message.toString());LOG.error(e.toString());}}/*** <br>描 述: 读取模块文件 转换为 String* <br>作 者: shizhenwei * <br>历 史: (版本) 作者 时间 注释* @param url* @return*/public static String readEmailTemplate(String url){try {String classpath = MailUtils.class.getResource("/").getPath();FileInputStream in = new FileInputStream(classpath+"/"+url);int size=in.available();byte[] buffer=new byte[size];in.read(buffer);in.close();return new String(buffer,"UTF-8");} catch (IOException e) {e.printStackTrace();}return null;}
}

4.配置文件

#mail
mail.smtp.host=smtp.163.com
mail.sender.username=xxx@163.com
mail.sender.password=xxx
mail.smtp.timeout=25000
mail.sender.username_dispaly=中国人民
mail.sender.subject=债务履行核实函

文件名称:mail_template_zwlxhsh.st

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head><title>Untitled Document</title><meta http-equiv="X-UA-Compatible" content="IE=edge"/><meta http-equiv="content-type" content="text/html; charset=utf-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="apple-mobile-web-app-capable" content="yes" />
<head/>
<body><!--注释mail_debt_name    欠款人mail_lender_name    出借人mail_debt_date    合同签订时间mail_notarization_cod    公证申请编号mail_contract_amont    合同金额mail_contract_deadline    合同期限mail_dept_principal    欠款本金mail_dept_endate    借款截止时间mail_dept_interest_date 欠款利息日mail_late_charge 利率mail_send_date 邮件发送日期mail_statement_date    各个贷款时间--><div style="margin-left:80px;">债务履行核实函<br /><br />mail_debt_name:<br /><p>mail_debt_date,你方与出借人mail_lender_name签订《借款合同》,并在我处对该合同办理了具有强制执行效力的债权文书公证【公证书编号:mail_notarization_cod】。合同约定:借款人mail_debt_name向出借人mail_lender_name申请借款人民币mail_contract_amont元,借款期限mail_contract_deadline。</p><p>现出借人向本处提出申请称:其于mail_statement_date以银行转帐方式给付mail_debt_name借款共计mail_contract_amont元,现借款期限已到期,但是mail_debt_name未能依约还款,尚欠本金mail_dept_principal元,利息给付至mail_dept_endate。故依合同约定向公证处申请出具《执行证书》,请求确认执行标的:一、借款本金mail_dept_principal元;二、借款利息,自mail_dept_interest_date起至还款之日止,按月利率mail_late_charge%计算。</P><p>    现与你方核实上述借款的还款情况,请收到此函后三个工作日内以书面形式回复、或者亲自到我处向承办公证员如实陈述履行合同的情况,并提供相关证据。若到期没有回复或未能提供证据,则视为你方对上述债权主张无异议,我处将按上述合同约定及出借人主张的债权金额,出具执行证书。之后,出借人可以不经诉讼,直接向有管辖权的人民法院对你方申请强制执行。</p><br /><div><div style="float:right;width:400px"><div style="text-align:-webkit-center">北京市中信公证处</div><div style="text-align:-webkit-center">mail_send_date</div></div></div><br /><div>联系人:xxx公证员&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp法务:xxx<br />电  话:010-52601155-627或641<br />地  址:北京市西城区金融街广宁伯路2号铁通大厦五层<br /><br /></div></div>
</body>

转载于:https://www.cnblogs.com/zwcry/p/8482887.html

JAVA 邮件发送工具类相关推荐

  1. Java 基于mail.jar 和 activation.jar 封装的邮件发送工具类

    准备工作 发送邮件需要获得协议和支持! 开启服务 POP3/SMTP 服务 如何开启 POP3/SMTP 服务:https://blog.csdn.net/weixin_44953227/articl ...

  2. 封装一个邮件发送工具类,一个字,巴适

    系列文章目录 文章目录 系列文章目录 前言 一. 介绍 二.二话不说开始干 1.引入库 2. 邮件发送实体(Mail) 3. 邮件发送类型枚举(MailType ) 4.邮件发送抽象类(Abstrac ...

  3. java邮箱发送工具类

    如何编写邮箱发送功能模块 1.主要编写了邮箱发送工具类,里面每行代码有详细注释,直接复制修改个人邮箱信息就能进行测试,希望对大家有用. 1.主要编写了邮箱发送工具类,里面每行代码有详细注释,直接复制修 ...

  4. [Java工具] 邮件发送工具

    注册邮箱 去163邮箱(或其他邮箱)注册一个邮箱,并开启SMTP授权码. 程序 需要注意的是,由于阿里云服务器不让使用默认的25端口,所以会出现Windows下测试发送邮件成功,Linux服务器下发送 ...

  5. SMTP 协议邮件发送工具封装

    文章目录 1. 前言 1.1 说明 1.2 建议 1.3 源码 2. 发件人邮箱开通smtp 服务 2.1 为什么开通smtp 服务 2.2 开启服务的步骤 2.3 普通邮箱开启服务图文 3. 工具类 ...

  6. Java邮件发送QQ邮箱带附件

    添加依赖 <!-- https://mvnrepository.com/artifact/javax.mail/mail --><dependency><groupId& ...

  7. java企业微信消息发送工具类

    java企业微信消息发送工具类 用途 基于java实现调用企业微信发送消息,文件,图片. 实现效果 文件列表 文件名 用途 WechatUtil.java 企业微信工具类 WechatTest.jav ...

  8. Java使用hutool工具类发送http请求

    Java使用hutool工具类发送网络请求 引入jar包 pom.xml添加以下hutool依赖 <dependency><groupId>cn.hutool</grou ...

  9. 邮箱验证码发送工具类(秒发)

    如题,不做过多介绍,直接上代码 package util;import javax.mail.Session; import javax.mail.Transport; import javax.ma ...

最新文章

  1. Redis进阶-string底层数据结构精讲
  2. 从浏览器多进程到JS单线程,JS运行机制最全面的一次梳理
  3. CS190.1x-ML_lab1_review_student
  4. 前端月薪过万需要哪些技术_Web前端月薪过万必修的几项技能,你会吗?
  5. 软件设计:表达组织中的上下级关系
  6. Android-Socket的最基础实现以及遇见在2.3可用4.3不可用的解决方法
  7. map分组后取前10个_java中list里面存放map,根据map中的某两个个字段进行排序
  8. 推导基姆拉尔森公式根据日期计算星期
  9. hdu 1698 Just a Hook(线段树区间修改)
  10. EurekaServer高可用的注册中心集群搭建
  11. 25服务端_手把手教你使用 OpenResty 搭建高性能服务端!
  12. 小球碰撞(理解ing)
  13. Qt界面语言设置(官方汉化)
  14. window7电脑显示屏调亮度的四种方式
  15. 狗狗有关的知识tips
  16. 水仙花数n位c语言程序,水仙花数C语言的
  17. Ceph 故障排查笔记 | 万字经验总结
  18. filezilla提示 local: unable to open
  19. 图形学初步----------多边形填充算法
  20. Ai-WB2模组基于TCP的MQTT连接服务器使用示例

热门文章

  1. Bitcoin Core P2P网络层
  2. oracle 如何获取表的主键列名,如何获取表的所有列名
  3. Codeforces Round#434 DIV.2
  4. struts2拦截器的实现原理及源码剖析
  5. ACM PKU 1192 最优连通子集
  6. Java通过JDBC来连接SqlServer数据库
  7. c/c++中typedef详解(此文对typedef用于结构体的定义说明得很清楚到位)
  8. 织梦换了html模板样式没了,织梦(dedecms)如何更换网站模板?
  9. 旋转函数_一招搞定高中数学函数平移旋转问题
  10. leetcode算法题--从上到下打印二叉树 II