01_JavaMail_05_创建邮件工具类MailUtils等方便发送邮件

时间:2022-09-08 12:24:47

【工程截图】

01_JavaMail_05_创建邮件工具类MailUtils等方便发送邮件

【代码实现】

【Mail.java】

package com.Higgin.Utils;

import java.util.ArrayList;
import java.util.List; /**
* 表示邮件类,你需要设置:账户名和密码、收件人、抄送(可选)、暗送(可选)、主题、内容,以及附件(可选)
*
* 在创建了Mail对象之后
* 可以调用它的setSubject()、setContent(),设置主题和正文
* 也可以调用setFrom()和 addToAddress(),设置发件人,和添加收件人。
* 也可以调用addAttch()添加附件
* 创建AttachBean:new AttachBean(new File("..."), "fileName");
*/
public class Mail {
private String from;  //发件人
private StringBuilder toAddress = new StringBuilder();  //收件人
private StringBuilder ccAddress = new StringBuilder();  //抄送
private StringBuilder bccAddress = new StringBuilder();  //暗送 private String subject;//主题
private String content;//正文 // 附件列表
private List<AttachBean> attachList = new ArrayList<AttachBean>(); public Mail() {} public Mail(String from, String to) {
this(from, to, null, null);
} public Mail(String from, String to, String subject, String content) {
this.from = from;
this.toAddress.append(to);
this.subject = subject;
this.content = content;
} /**
* 返回发件人
* @return
*/
public void setFrom(String from) {
this.from = from;
} /**
* 返回发件人
* @return
*/
public String getFrom() {
return from;
} /**
* 返回主题
*/
public String getSubject() {
return subject;
} /**
* 设置主题
*/
public void setSubject(String subject) {
this.subject = subject;
} /**
* 获取主题内容
*/
public String getContent() {
return content;
} /**
* 设置主题内容
* @param content
*/
public void setContent(String content) {
this.content = content;
} /**
* 获取收件人
* @return
*/
public String getToAddress() {
return toAddress.toString();
} /**
* 获取抄送
* @return
*/
public String getCcAddress() {
return ccAddress.toString();
} /**
* 获取暗送
* @return
*/
public String getBccAddress() {
return bccAddress.toString();
} /**
* 添加收件人,可以是多个收件人
* @param to
*/
public void addToAddress(String to) {
if(this.toAddress.length() > 0) {
this.toAddress.append(",");
}
this.toAddress.append(to);
} /**
* 添加抄送人,可以是多个抄送人
* @param cc
*/
public void addCcAddress(String cc) {
if(this.ccAddress.length() > 0) {
this.ccAddress.append(",");
}
this.ccAddress.append(cc);
} /**
* 添加暗送人,可以是多个暗送人
* @param bcc
*/
public void addBccAddress(String bcc) {
if(this.bccAddress.length() > 0) {
this.bccAddress.append(",");
}
this.bccAddress.append(bcc);
} /**
* 添加附件,可以添加多个附件
* @param attachBean
*/
public void addAttach(AttachBean attachBean) {
this.attachList.add(attachBean);
} /**
* 获取所有附件
* @return
*/
public List<AttachBean> getAttachs() {
return this.attachList;
}
}

【AttachBean.java】

package com.Higgin.Mail.Utils;

import java.io.File;
/**
* 发送附件用
*/
public class AttachBean {
private String cid;
private File file;
private String fileName; public String getCid() {
return cid;
} public void setCid(String cid) {
this.cid = cid;
} public File getFile() {
return file;
} public void setFile(File file) {
this.file = file;
} public String getFileName() {
return fileName;
} public void setFileName(String fileName) {
this.fileName = fileName;
} public AttachBean() { } public AttachBean(File file, String fileName) {
super();
this.file = file;
this.fileName = fileName;
}
}

【MailUtils.java】

package com.Higgin.Utils;

import java.io.IOException;
import java.util.List;
import java.util.Properties; import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.Message.RecipientType;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
import javax.mail.internet.MimeUtility; /**
* 邮件工具类
* @author YH
*
*/
public class MailUtils {
public static Session createSession(String host, final String username, final String password) {
Properties prop = new Properties();
prop.setProperty("mail.host", host); // 指定主机
prop.setProperty("mail.smtp.auth", "true"); // 指定验证为true // 创建验证器
Authenticator auth = new Authenticator() {
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication(username, password);
}
}; // 获取session对象
return Session.getInstance(prop, auth);
} /**
* 发送指定的邮件
*
* @param mail
*/
public static void send(Session session, final Mail mail) throws MessagingException,
IOException { MimeMessage msg = new MimeMessage(session);// 创建邮件对象
msg.setFrom(new InternetAddress(mail.getFrom()));// 设置发件人
msg.addRecipients(RecipientType.TO, mail.getToAddress());// 设置收件人 // 设置抄送
String cc = mail.getCcAddress();
if (!cc.isEmpty()) {
msg.addRecipients(RecipientType.CC, cc);
} // 设置暗送
String bcc = mail.getBccAddress();
if (!bcc.isEmpty()) {
msg.addRecipients(RecipientType.BCC, bcc);
} msg.setSubject(mail.getSubject());// 设置主题 MimeMultipart parts = new MimeMultipart();// 创建部件集对象 MimeBodyPart part = new MimeBodyPart();// 创建一个部件
part.setContent(mail.getContent(), "text/html;charset=utf-8");// 设置邮件文本内容
parts.addBodyPart(part);// 把部件添加到部件集中 /////////////////////////////////////////// // 添加附件
List<AttachBean> attachBeanList = mail.getAttachs();// 获取所有附件
if (attachBeanList != null) {
for (AttachBean attach : attachBeanList) {
MimeBodyPart attachPart = new MimeBodyPart();// 创建一个部件
attachPart.attachFile(attach.getFile());// 设置附件文件
attachPart.setFileName(MimeUtility.encodeText(attach
.getFileName()));// 设置附件文件名
String cid = attach.getCid();
if(cid != null) {
attachPart.setContentID(cid);
}
parts.addBodyPart(attachPart);
}
} msg.setContent(parts);// 给邮件设置内容
Transport.send(msg);// 发邮件
}
}

【MailUtilsTest.java】测试类

package com.Higgin.Mail.Demo;

import java.io.IOException;
import javax.mail.MessagingException;
import javax.mail.Session;
import org.junit.Test; import com.Higgin.Mail.Utils.Mail;
import com.Higgin.Mail.Utils.MailUtils; public class MailUtilsTest {
/*** 发邮件
* @throws IOException
* @throws MessagingException ***/
@Test
public void sendMail() throws MessagingException, IOException{
/**
* 1.登录邮件服务器
* MailUtils.createSession(服务器地址,登录名,密码);
* 2.创建邮件对象
* 发件人
* 收件人
* 主题
* 正文
* 3.发邮件
* 需要第1步得到的session 以及 第2步的邮件对象
*/ Session session=MailUtils.createSession("smtp.163.com", "Higgin", "123456");
//public Mail(String from, String to, String subject, String content)
Mail mail=new Mail("higgin1@163.com","higgin2@126.com","测试邮件标题啊","邮件内容啊");
//发送
MailUtils.send(session, mail);
}
}

01_JavaMail_05_创建邮件工具类MailUtils等方便发送邮件的更多相关文章

  1. hibernate课程 初探一对多映射2-3 创建hibernateUtil工具类

    本节主要内容:创建hibernateUtil工具类:demo demo: HibernateUtil.java package hibernate_001; import org.hibernate. ...

  2. java邮件工具类【最终版】

    http://www.xdemo.org/java-mail/ 对比链接中,添加了抄送和暗抄送功能(已解决,如图代码:抄送不能多个用户,会报错,未解之谜) sendHtmlmail方法可以发送附件以及 ...

  3. 创建JDBCUtils工具类

    JDBCUtils工具类 私有化构造函数,外界无法直接创建对象 提供公共的,静态的,getConnection 方法,用来给外界提供数据库连接 提供公共的,静态的,close方法,用来释放资源 pac ...

  4. java发送邮件完整实例 java邮件工具类

    http://yuncode.net/code/c_552a2e2dc593894 package com.srie.mail; import java.util.Properties; import ...

  5. 邮件工具类--EmailUtil

    /* Copyright Notice ===================================================* * This file contains propri ...

  6. java中使用javaMail工具类发送邮件

    1.引入依赖 <!--javaMail--> <dependency> <groupId>javax.mail</groupId> <artifa ...

  7. Android FileUtil&lpar;android文件工具类&rpar;

    android开发和Java开发差不了多少,也会有许多相同的功能.像本文提到的文件存储,在Java项目和android项目里面用到都是相同的.只是android开发的一些路径做了相应的处理. 下面就是 ...

  8. 【知了堂学习心得】浅谈c3p0连接池和dbutils工具类的使用

    1. C3P0概述 C3P0是一个开源的JDBC连接池,它实现了数据源和JNDI绑定,支持JDBC3规范和JDBC2的标准扩展.目前使用它的开源项目有Hibernate,Spring等. 2. C3P ...

  9. BeanUtil工具类的使用

    BeanUtils的使用 1.commons-beanutils的介绍 commons-beanutils是Apache组织下的一个基础的开源库,它提供了对Java反射和内省的API的包装,依赖内省, ...

随机推荐

  1. HTML 内容居中方式总结

    在HTML网页排版经常会用到关于对其方式的情况,水平居中和垂直居中.特别是水平居中,并不是一个简单的text-align就可以解决所有的情况. 开始之前普及一点HTML知识,目标很明显,不同的页面结构 ...

  2. JetBrains WebStorm 7&period;0 Build 131&period;202 Win&sol;Mac&sol;Liniux

    JetBrains WebStorm 7.0 Build 131.202 (Win/Mac/Liniux) | 121.6/106/133 Mb WebStorm 7 — Everything you ...

  3. MongoDB &lpar;三&rpar; MongoDB 安装

    MongoDB安装在Windows上 在 Windows上,首先要安装 MongoDB下载最新发布的MongoDB: http://www.mongodb.org/downloads 确保得到正确的版 ...

  4. Java基础总结--面向对象2

    1.存在相关的多个方法就封装在一个类中,方法没调用到特有数据,需要静态化2.假如一个类所有方法都是静态方法,为了保证不被其他创建对象,可以将该类的构造方法私有化3.文档注释javadoc-按照规定注释 ...

  5. servlet实现方式(未完待续)

    servlet的是方式有三种,分别是: 1,实现servlt接口 点击查看详情 2,继承GenericServlet类[适配器模式] 3,继承HttpServlet类[模板方法设计模式]最常用的方法 ...

  6. 无锁编程 - Double-checked Locking

    Double-checked Locking,严格意义上来讲不属于无锁范畴,无论什么时候当临界区中的代码仅仅需要加锁一次,同时当其获取锁的时候必须是线程安全的,此时就可以利用 Double-check ...

  7. 基于Amoba实现mysql主从读写分离

    一.Amoeba简介           Amoeba是一个以MySQL为底层数据存储,并对应用提供MySQL协议接口的proxy.它集中地响应应用的请求,依据用户事先设置的规则,将SQL请求发送到特 ...

  8. I&sol;O模型(同步、非同步、阻塞、非阻塞)总结

    I/O:同步(synchronous).异步(asynchronous).阻塞(blocking).非阻塞(nonblocking) 1.I/O内部机制 出于安全考虑,用户程序(用户态)是没办法直接操 ...

  9. Ubuntu16&period;04下的主题美化

    1.先下载桌面外观管理工具 sudo apt-get install unity-tweak-tool 2.gnome工具 sudo apt-get install gnome-tweak-tool ...

  10. Caused by&colon; java&period;sql&period;SQLException&colon; Failed to start database &&num;39&semi;metastore&lowbar;db&&num;39&semi; with class loader org&period;apache&period;spark&period;sql&period;hive&period;client&period;IsolatedClientLoader&dollar;&dollar;anon&dollar;1&commat;d7c365&comma; see the next exception for details&period;

    解决方法:https://*.com/questions/37442910/spark-shell-startup-errors 异常: 18/01/29 19:04:27 W ...