【工程截图】

【代码实现】

【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. shell中常用的特殊符号

    在shell中常用的特殊符号罗列如下: # ; ;; . , / \ 'string'| ! $ ${} $? $$ $* "string"* ** ? : ^ $# $@ `co ...

  2. hdu5593--ZYB's Tree(树形dp)

    问题描述 ZYB有一颗N个节点的树,现在他希望你对于每一个点,求出离每个点距离不超过KK的点的个数. 两个点(x,y)在树上的距离定义为两个点树上最短路径经过的边数, 为了节约读入和输出的时间,我们采 ...

  3. 并查集 poj1611&poj2492

    poj1611 简单题 代码中id记录父节点,sz记录子树规模.一个集合为一棵树. #include <iostream> #include <cstdio> using na ...

  4. PHP中Get()和Post()用法详解

    作为一个计算机系统,输入输出设备作为非核心设备却是不可或缺的,硬件如此,软件亦是如此.试想一台功能强劲的计算机,如果没有输入输出设备,它与一块只能耗电并且发出嗡嗡噪音的废铁有何不同.应用程序的道理也是 ...

  5. Ubuntu下开启root登陆

    亲手安装过Ubuntu的童鞋都知道,默认安装只会添加一个普通用户名和密码,而超级用户权限则是利用sudo命令来执行.在Ubuntu下使用root登陆或者在shell中用su命令切换到root时会提示错 ...

  6. 大型网站都喜欢把js写在html中的真正原因

    相信经常观察大站的朋友都会发现,他们都把CSS写在HTML页面里,一个页面的或者多个页面的背景图片,都集成到一张图片里,他们有的JS文件,也写到页面里了……也许你会迷惑,现在到处讲页面的优化,不都是要 ...

  7. Java中各种排序算法

    package org.rut.util.algorithm.support; import org.rut.util.algorithm.SortUtil; /** * @author treero ...

  8. JAVA Web 之 struts2文件上传下载演示(一)(转)

    JAVA Web 之 struts2文件上传下载演示(一) 一.文件上传演示 1.需要的jar包 大多数的jar包都是struts里面的,大家把jar包直接复制到WebContent/WEB-INF/ ...

  9. Linux内核:关于中断你须要知道的

    1.中断处理程序与其它内核函数真正的差别在于,中断处理程序是被内核调用来对应中断的,而它们执行于中断上下文(原子上下文)中,在该上下文中执行的代码不可堵塞. 中断就是由硬件打断操作系统. 2.异常与中 ...

  10. c# 可以有多个Main()函数

    可以有多个Main()函数,这样写:namespace ConsoleApp1{class Program{static void Main(string[] args){Console.WriteL ...