项目例子地址:
http://download.csdn.net/detail/kucaozhuzhu/6531159
第一个类:MailSenderInfo.java
package mail;
importjava.util.Properties;
/**
* 发送邮件需要使用的基本信息
*/
publicclass MailSenderInfo {
//邮件ip和端口
private StringmailServerHost;
private StringmailServerPort;
//发送地址
private StringfromAddress;
//接收地址
private StringtoAddress;
//发送用户名和密码
private StringuserName;
private Stringpassword;
//是否需要身份验证
privatebooleanvalidate;
//邮件主题
private Stringsubject;
//邮件内容
private Stringcontent;
//邮件附件文件名
private String[]attachFileNames;
/**
* 获得邮件回话属性
* @return
*/
public Properties getProperties(){
Properties p=new Properties();
p.put("mail.smtp.host",this.mailServerHost);
p.put("mail.smtp.port",this.mailServerPort);
p.put("mail.smtp.auth",validate?"true":"false");
return p;
}
public String getMailServerHost() {
returnmailServerHost;
}
publicvoid setMailServerHost(StringmailServerHost) {
this.mailServerHost = mailServerHost;
}
public String getMailServerPort() {
returnmailServerPort;
}
publicvoid setMailServerPort(StringmailServerPort) {
this.mailServerPort = mailServerPort;
}
public String getFromAddress() {
returnfromAddress;
}
publicvoid setFromAddress(String fromAddress){
this.fromAddress = fromAddress;
}
public String getToAddress() {
returntoAddress;
}
publicvoid setToAddress(String toAddress) {
this.toAddress = toAddress;
}
public String getUserName() {
returnuserName;
}
publicvoid setUserName(String userName) {
this.userName = userName;
}
public String getPassword() {
returnpassword;
}
publicvoid setPassword(String password) {
this.password = password;
}
publicboolean isValidate() {
returnvalidate;
}
publicvoid setValidate(boolean validate) {
this.validate = validate;
}
public String getSubject() {
returnsubject;
}
publicvoid setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
returncontent;
}
publicvoid setContent(String content) {
this.content = content;
}
public String[] getAttachFileNames() {
returnattachFileNames;
}
publicvoid setAttachFileNames(String[]attachFileNames) {
this.attachFileNames = attachFileNames;
}
}
package com.util.mail;
/**
* 发送邮件需要使用的基本信息
*/
import java.util.Properties;
public class MailSenderInfo {
// 发送邮件的服务器的IP和端口
private String mailServerHost;
private String mailServerPort = "25";
// 邮件发送者的地址
private String fromAddress;
// 邮件接收者的地址
private String toAddress;
// 登陆邮件发送服务器的用户名和密码
private String userName;
private String password;
// 是否需要身份验证
private boolean validate = false;
// 邮件主题
private String subject;
// 邮件的文本内容
private String content;
// 邮件附件的文件名
private String[] attachFileNames;
/**
* 获得邮件会话属性
*/
public Properties getProperties(){
Properties p = newProperties();
p.put("mail.smtp.host", this.mailServerHost);
p.put("mail.smtp.port", this.mailServerPort);
p.put("mail.smtp.auth", validate ? "true" :"false");
return p;
}
public String getMailServerHost() {
return mailServerHost;
}
public void setMailServerHost(String mailServerHost) {
this.mailServerHost =mailServerHost;
}
public String getMailServerPort() {
return mailServerPort;
}
public void setMailServerPort(String mailServerPort) {
this.mailServerPort =mailServerPort;
}
public boolean isValidate() {
return validate;
}
public void setValidate(boolean validate) {
this.validate = validate;
}
public String[] getAttachFileNames() {
return attachFileNames;
}
public void setAttachFileNames(String[] fileNames) {
this.attachFileNames =fileNames;
}
public String getFromAddress() {
return fromAddress;
}
public void setFromAddress(String fromAddress) {
this.fromAddress =fromAddress;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getToAddress() {
return toAddress;
}
public void setToAddress(String toAddress) {
this.toAddress = toAddress;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String textContent) {
this.content = textContent;
}
}
第二个类:SimpleMailSender.java
package mail;
importjava.util.Date;
importjava.util.Properties;
importjavax.activation.DataHandler;
importjavax.activation.FileDataSource;
importjavax.mail.Address;
importjavax.mail.BodyPart;
importjavax.mail.Message;
importjavax.mail.MessagingException;
importjavax.mail.Multipart;
importjavax.mail.Session;
importjavax.mail.Transport;
importjavax.mail.internet.AddressException;
importjavax.mail.internet.InternetAddress;
importjavax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;
/**
*
* @author Administrator
*
*/
publicclass SimpleMailSender {
/**
* 文本邮件
* @param mailInfo
* @return
*/
publicboolean sendTextMail(MailSenderInfomailInfo){
//判断是否需要身份验证
MyAuthenticator authenticator=null;
Properties pro=mailInfo.getProperties();
//需要验证
if(mailInfo.isValidate()){
//创建一个密码验证器
authenticator=new MyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword());
}
//根据邮件回话属性和密码验证器构造一个发邮件的session
Session sendMailSession =Session.getDefaultInstance(pro,authenticator);
try{
//根据session创建一个邮件消息
Message mailMessage=new MimeMessage(sendMailSession);
//创建邮件发送者地址
Address from =new InternetAddress(mailInfo.getFromAddress());
//设置邮件消息发送者
mailMessage.setFrom(from);
//设置邮件接受者地址
Address to =new InternetAddress(mailInfo.getToAddress());
//设置邮件接受者
mailMessage.setRecipient(Message.RecipientType.TO, to);
//设置邮件消息主题
mailMessage.setSubject(mailInfo.getSubject());
//设置邮件发送时间
mailMessage.setSentDate(new Date());
//设置邮件内容
mailMessage.setText(mailInfo.getContent());
Transport.send(mailMessage);
returntrue;
}catch(Exception e){
e.printStackTrace();
}
returnfalse;
}
/**
* 发送带附件
* @param mailInfo
* @return
*/
publicboolean sendFileMail(MailSenderInfomailInfo){
//判断是否需要身份验证
MyAuthenticator authenticator=null;
Properties pro=mailInfo.getProperties();
//需要验证
if(mailInfo.isValidate()){
//创建一个密码验证器
authenticator=new MyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword());
}
//根据邮件回话属性和密码验证器构造一个发邮件的session
Session sendMailSession =Session.getDefaultInstance(pro,authenticator);
Message mailMessage=new MimeMessage(sendMailSession);
try {
mailMessage.setFrom(new InternetAddress(mailInfo.getFromAddress()));
mailMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(mailInfo.getToAddress()));
mailMessage.setSentDate(new Date());
mailMessage.setSubject(mailInfo.getSubject());
Multipart nuMultipart=new MimeMultipart();
//添加正文
MimeBodyPart mbpContent=new MimeBodyPart();
mbpContent.setContent(mailInfo.getContent(),"text/html;charset=utf-8");
nuMultipart.addBodyPart(mbpContent);
for(int i=0;i<mailInfo.getAttachFileNames().length;i++){
String fileName=mailInfo.getAttachFileNames()[i];
//添加附件
MimeBodyPart mbpFile=new MimeBodyPart();
FileDataSource fileDataSource=new FileDataSource(fileName);
mbpFile.setDataHandler(new DataHandler(fileDataSource));
mbpFile.setFileName(fileName);
nuMultipart.addBodyPart(mbpFile);
}
mailMessage.setContent(nuMultipart);
Transport.send(mailMessage);
returntrue;
} catch (AddressException e) {
e.printStackTrace();
} catch (MessagingException e) {
e.printStackTrace();
}
returnfalse ;
}
/**
* html格式邮件
*/
publicboolean sendHtmlMail(MailSenderInfomailInfo){
MyAuthenticator authenticator=null;
Properties pro=mailInfo.getProperties();
if(mailInfo.isValidate()){
authenticator=new MyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword());
}
Session sendMailSession =Session.getDefaultInstance(pro,authenticator);
try{
Message mailMessage=new MimeMessage(sendMailSession);
mailMessage.setFrom(new InternetAddress(mailInfo.getFromAddress()));
mailMessage.setRecipient(Message.RecipientType.TO,new InternetAddress(mailInfo.getToAddress()));
mailMessage.setSentDate(new Date());
mailMessage.setSubject(mailInfo.getSubject());
//创建一个包含MimeMultipart类型的对象
Multipart mainPart=new MimeMultipart();
//创建容器
BodyPart html=new MimeBodyPart();
//设置html内容
html.setContent(mailInfo.getContent(),"text/html;charset=utf-8");
mainPart.addBodyPart(html);
//设置邮件内容
mailMessage.setContent(mainPart);
//发送
Transport.send(mailMessage);
returntrue;
}catch(Exception e){
e.printStackTrace();
}
returnfalse;
}
}
package com.util.mail;
import java.util.Date;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
importjavax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
importjavax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
importjavax.mail.internet.MimeMessage;
importjavax.mail.internet.MimeMultipart;
/**
* 简单邮件(不带附件的邮件)发送器
*/
public classSimpleMailSender {
/**
* 以文本格式发送邮件
* @param mailInfo 待发送的邮件的信息
*/
public boolean sendTextMail(MailSenderInfo mailInfo) {
// 判断是否需要身份认证
MyAuthenticatorauthenticator = null;
Properties pro = mailInfo.getProperties();
if (mailInfo.isValidate()){
// 如果需要身份认证,则创建一个密码验证器
authenticator = new MyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword());
}
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
Session sendMailSession =Session.getDefaultInstance(pro,authenticator);
try {
// 根据session创建一个邮件消息
Message mailMessage = newMimeMessage(sendMailSession);
// 创建邮件发送者地址
Address from = newInternetAddress(mailInfo.getFromAddress());
// 设置邮件消息的发送者
mailMessage.setFrom(from);
// 创建邮件的接收者地址,并设置到邮件消息中
Address to = newInternetAddress(mailInfo.getToAddress());
mailMessage.setRecipient(Message.RecipientType.TO,to);
// 设置邮件消息的主题
mailMessage.setSubject(mailInfo.getSubject());
// 设置邮件消息发送的时间
mailMessage.setSentDate(newDate());
// 设置邮件消息的主要内容
String mailContent =mailInfo.getContent();
mailMessage.setText(mailContent);
// 发送邮件
Transport.send(mailMessage);
return true;
} catch (MessagingExceptionex) {
ex.printStackTrace();
}
return false;
}
/**
* 以HTML格式发送邮件
* @param mailInfo 待发送的邮件信息
*/
public static boolean sendHtmlMail(MailSenderInfo mailInfo){
// 判断是否需要身份认证
MyAuthenticatorauthenticator = null;
Properties pro =mailInfo.getProperties();
//如果需要身份认证,则创建一个密码验证器
if (mailInfo.isValidate()){
authenticator = new MyAuthenticator(mailInfo.getUserName(),mailInfo.getPassword());
}
// 根据邮件会话属性和密码验证器构造一个发送邮件的session
Session sendMailSession =Session.getDefaultInstance(pro,authenticator);
try {
// 根据session创建一个邮件消息
Message mailMessage = newMimeMessage(sendMailSession);
// 创建邮件发送者地址
Address from = newInternetAddress(mailInfo.getFromAddress());
// 设置邮件消息的发送者
mailMessage.setFrom(from);
// 创建邮件的接收者地址,并设置到邮件消息中
Address to = newInternetAddress(mailInfo.getToAddress());
// Message.RecipientType.TO属性表示接收者的类型为TO
mailMessage.setRecipient(Message.RecipientType.TO,to);
// 设置邮件消息的主题
mailMessage.setSubject(mailInfo.getSubject());
// 设置邮件消息发送的时间
mailMessage.setSentDate(newDate());
// MiniMultipart类是一个容器类,包含MimeBodyPart类型的对象
Multipart mainPart = newMimeMultipart();
// 创建一个包含HTML内容的MimeBodyPart
BodyPart html = newMimeBodyPart();
// 设置HTML内容
html.setContent(mailInfo.getContent(),"text/html; charset=utf-8");
mainPart.addBodyPart(html);
// 将MiniMultipart对象设置为邮件内容
mailMessage.setContent(mainPart);
// 发送邮件
Transport.send(mailMessage);
return true;
} catch (MessagingExceptionex) {
ex.printStackTrace();
}
return false;
}
}
第三个类:MyAuthenticator.java
package mail;
importjavax.mail.Authenticator;
importjavax.mail.PasswordAuthentication;
publicclass MyAuthenticatorextends Authenticator{
String userName=null;
String password;
public MyAuthenticator(){
}
public MyAuthenticator(String userName,String password){
this.userName=userName;
this.password=password;
}
protected PasswordAuthentication getPasswordAuthentication(){
returnnew PasswordAuthentication(userName,password);
}
}
package com.util.mail;
import javax.mail.*;
public class MyAuthenticatorextends Authenticator{
String userName=null;
String password=null;
public MyAuthenticator(){
}
public MyAuthenticator(String username, String password) {
this.userName = username;
this.password = password;
}
protected PasswordAuthentication getPasswordAuthentication(){
return new PasswordAuthentication(userName, password);
}
}
下面给出使用上面三个类的代码:
package mail;
publicclass TestMail {
publicstaticvoid main(String[] args) {
MailSenderInfo mailSenderInfo=new MailSenderInfo();
mailSenderInfo.setMailServerHost("smtp.163.com");
mailSenderInfo.setMailServerPort("25");
mailSenderInfo.setValidate(true);
mailSenderInfo.setUserName("tyrone_kucao@163.com");
mailSenderInfo.setPassword("******");
mailSenderInfo.setFromAddress("tyrone_kucao@163.com");
mailSenderInfo.setToAddress("tyrone_kucao@163.com");
mailSenderInfo.setContent("收到则测试成功!!!嘿嘿-------------");
//mailSenderInfo.setSubject("测试javamail邮件");
mailSenderInfo.setAttachFileNames(new String[]{"C:/Users/Administrator/Desktop/学习爱.txt","C:/Users/Administrator/Desktop/1234.txt"});
//设置发送格式
SimpleMailSender sms=new SimpleMailSender();
mailSenderInfo.setSubject("测试javamail_text邮件");
boolean t1=sms.sendTextMail(mailSenderInfo);
mailSenderInfo.setSubject("测试javamail_html邮件");
boolean t2=sms.sendHtmlMail(mailSenderInfo);
mailSenderInfo.setSubject("测试javamail_file邮件");
boolean t3=sms.sendFileMail(mailSenderInfo);
if(t1){
System.out.println("text发送成功!");
}else{
System.out.println("text发送失败!");
}
if(t2){
System.out.println("html发送成功!");
}else{
System.out.println("html发送失败!");
}
if(t3){
System.out.println("file发送成功!");
}else{
System.out.println("file发送失败!");
}
}
}
//设置发送格式
SimpleMailSender sms=new SimpleMailSender();
boolean t1=sms.sendTextMail(mailSenderInfo);
boolean t2=sms.sendHtmlMail(mailSenderInfo);
if(t1){
System.out.println("text发送成功!");
}else{
System.out.println("text发送失败!");
}
if(t2){
System.out.println("html发送成功!");
}else{
System.out.println("html发送失败!");
}
}
}
public static voidmain(String[] args){
//这个类主要是设置邮件
MailSenderInfo mailInfo =new MailSenderInfo();
mailInfo.setMailServerHost("smtp.163.com");
mailInfo.setMailServerPort("25");
mailInfo.setValidate(true);
mailInfo.setUserName("han2000lei@163.com");
mailInfo.setPassword("**********");//您的邮箱密码
mailInfo.setFromAddress("han2000lei@163.com");
mailInfo.setToAddress("han2000lei@163.com");
mailInfo.setSubject("设置邮箱标题");
mailInfo.setContent("设置邮箱内容");
//这个类主要来发送邮件
SimpleMailSender sms = newSimpleMailSender();
sms.sendTextMail(mailInfo);//发送文体格式
sms.sendHtmlMail(mailInfo);//发送html格式
}