【工程截图】

【代码实现】

【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. HDU 1114 iggy-Bank(完全背包)

    水 给出小猪钱罐的重量和装满钱后的重量,然后是几组数据,每组数据包括每种钱币的价值与重量 要求出重量最少能装满钱罐时的最大价值 #include<iostream> #include< ...

  2. ural 1091. Tmutarakan Exams 和 codeforces 295 B. Greg and Graph

    ural 1091 题目链接:http://acm.timus.ru/problem.aspx?space=1&num=1091 题意是从1到n的集合里选出k个数,使得这些数满足gcd大于1 ...

  3. [Windows Server] 在 Windows Server 2012 上安裝 .NET Framework 3.5 - 摘自网络

    官方: Applies To: Windows 8, Windows 8.1 For a Windows Server® 2012 core installation that is not conn ...

  4. storm的设计思想

    storm的设计思想 在 Storm 中也有对流(Stream)的抽象,流是一个不间断的.无界的连续 Tuple(Storm在建模事件流时,把流中的事件抽象为 Tuple 即元组).Storm 认为每 ...

  5. A Tour of Go If

    The if statement looks as it does in C or Java, except that the ( ) are gone and the { } are require ...

  6. java 日志技术汇总(log4j , Commons-logging,.....)

    前言 在Tomcat 与weblogic 中的 日志(log4j) 配置系列一 在系列一 中, 有一个问题一直没有解决,就是部署到weblogic 中应用程序如何通过log4j写日志到文件中? 这里仅 ...

  7. jQuery对象与dom对象相互转换jQuery对象与dom对象相互转换

    转至:http://www.chinaz.com/design/2010/0309/108144.shtml 刚开始学习jQuery,可能一时会分不清楚哪些是jQuery对象,哪些是DOM对象.至于D ...

  8. 揭秘淘宝自主研发的文件系统:TFS

    目前,国内自主研发的文件系统可谓凤毛麟角.淘宝在这一领域做了有效的探索和实践,Taobao File System(TFS)作为淘宝内部使用的分布式文件系统,针对海量小文件的随机读写访问性能做了特殊优 ...

  9. lucene创建索引简单示例

    利用空闲时间写了一个使用lucene创建索引简单示例, 1.使用maven创建的项目 2.需要用到的jar如下: 废话不多说,直接贴代码如下: 1.创建索引的类(HelloLucene): packa ...

  10. UITableView cell中label自动换行和自定义label自动换行

    换行的前提必须是有足够的高度 才能换 否则不显示超出部分 所以,在设置label换行的时候 要考虑cell的高度,cell的高度也要变化,废话不多说,来段代码: cell.label.text=[di ...