【工程截图】

【代码实现】

【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课程设计---创建数据库工具类

    1.传统的数据库操作 package com.java.mysql; import java.sql.Connection; import java.sql.DriverManager; import ...

  5. 创建sqlsession工具类

    //1.sqlsession的获取: //类:GetSqlSession, 返回sqlsession对象,无参 public class GetSqlSession { public static S ...

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

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

  7. 邮件工具类--EmailUtil

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

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

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

  9. Android FileUtil(android文件工具类)

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

随机推荐

  1. YUV转灰度

    转载自:http://blog.csdn.net/sxjk1987/article/details/7470545 标准的V4L2 API http://v4l.videotechnology.com ...

  2. windows 7 中将“我的电脑”锁定到任务栏

    1.在桌面右击->新建->快捷方式 2.输入%SystemRoot%\explorer.exe /E,::{20D04FE0-3AEA-1069-A2D8-08002B30309D}点击下 ...

  3. Dynamics CRM 2011 2013-(An error occurred while opening mailbox xxx@xx.com Microsoft.Crm.Tools.Email.Providers.)

    An error occurred while opening mailbox  Microsoft.Crm.Tools.Email.Providers. Whenever I check how C ...

  4. 初次接触Android ActionBar比较烦人的问题[转]

    本文转自:http://blog.csdn.net/u010933209/article/details/40112079 问题一:icon不能正常显示 一直都对actionbar又爱又恨,特别是刚接 ...

  5. Learning JavaScript Design Patterns The Module Pattern

    The Module Pattern Modules Modules are an integral piece of any robust application's architecture an ...

  6. ECharts中文显示为Unicode码

    后台遍历出的数据,在ECharts的js中引用为Unicode码 解决方案: <s:property>标签的escape属性默认值为true,即不解析html代码,直接将其输出. 若想要输 ...

  7. JS自定义事件(Dom3级事件下)

    原文出处:  http://www.w3cfuns.com/notes/11861/e21736a0b15bceca0dc7f76d77c2fb5a.html . 我拿出作者中的一段,感谢作者原创. ...

  8. 三角形div的原理

    三角形div原理 首先我们写一个正常的方形div样式,但是我们把它的宽度和高度都设置为零,并且边框线设置的粗一点: { width:0px: height:0px; Border:20px solid ...

  9. JBPM学习(四):执行流程实例

    概念: ProcessInstance,流程实例:代表流程定义的一次执行.如:张三昨天按请假流程请了一次假.一个流程实例包括了所有运行阶段,其中最典型的属性就是跟踪当前节点的指针,如下图. Execu ...

  10. android 文件读取(assets、raw)

    需要注意的是,来自Resources和Assets 中的文件只可以读取而不能进行写的操作. assets文件夹里面的文件都是保持原始的文件格式,需要用AssetManager以字节流的形式读取文件. ...