package com.chengxi.jm.test;
import java.util.Properties;
/***
* 邮件发送的参数类
*
* @author wzh
* @version 1.0
*/
public class Mail_SendProper {
//邮件服务器
private String host;
private String port = "25";
//邮件发送者地址
private String sendAddress ;
//接收地址
private String receiveAddress = "372849177@qq.com";
//是否需要验证
private boolean isValidate ;
private String username;
private String password;
private String subject;//邮件主题
private String content;//邮件内容
private String[] attacheFileName;//邮件附件的名称
private String[] recs;//存储接收者邮件地址
public Properties getProperties(){
Properties properties = new Properties();
properties.put("mail.smtp.host", host);
properties.put("mail.smtp.post", port);
properties.put("mail.smtp.auth",isValidate?"true":"false");
return properties;
}
public String getHost() {
return host;
}
public void setHost(String host) {
this.host = host;
}
public String getPort() {
return port;
}
public void setPort(String port) {
this.port = port;
}
public String getSendAddress() {
return sendAddress;
}
public void setSendAddress(String sendAddress) {
this.sendAddress = sendAddress;
}
public String getReceiveAddress() {
return receiveAddress;
}
public void setReceiveAddress(String receiveAddress) {
this.receiveAddress = receiveAddress;
}
public boolean isValidate() {
return isValidate;
}
public void setValidate(boolean isValidate) {
this.isValidate = isValidate;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getContent() {
return content;
}
public void setContent(String content) {
this.content = content;
}
public String[] getAttacheFileName() {
return attacheFileName;
}
public void setAttacheFileName(String[] attacheFileName) {
this.attacheFileName = attacheFileName;
}
public String[] getRecs() {
return recs;
}
public void setRecs(String[] recs) {
this.recs = recs;
}
}
<pre name="code" class="java">
import javax.mail.Authenticator;
import javax.mail.PasswordAuthentication;
/***
* 使用第三方邮件服务器登陆 <br/>
* 验证服务器是否登陆成功
*
* @author wzh
* @version 1.0
*/
public class MailAttorney extends Authenticator{
private String username;
private String password;
public MailAttorney(String username,String password){
this.username = username;
this.password = password;
}
/*
* 重写父类方法
*/
protected PasswordAuthentication getPasswordAuthentication() {
PasswordAuthentication passwordAuthentication = new PasswordAuthentication(username, password);
return passwordAuthentication;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
package com.chengxi.jm.test;
import java.io.UnsupportedEncodingException;
import java.util.Date;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.BodyPart;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Multipart;
import javax.mail.Session;
import javax.mail.Transport;
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 wzh
* @version 1.0
*
*/
public class Send_Mail {
public static boolean MailText(Mail_SendProper prop) throws MessagingException{
MailAttorney mailAttorney = null ;
//判断是否需要身份验证
if(prop.isValidate()){
mailAttorney = new MailAttorney(prop.getUsername(), prop.getPassword());
}
//根据邮件会话属性 和密码验证器
Session sendMailSession = Session.getInstance(prop.getProperties(),mailAttorney);
//消息对象
Message mailMessage = new MimeMessage(sendMailSession);
//发送者地址
Address internetAddress = new InternetAddress(prop.getSendAddress());
//设置发送者地址
mailMessage.setFrom(internetAddress);
//定义address数组
Address[] ad =null;
String[] rec = prop.getRecs();
if(rec!=null){
ad = new InternetAddress[rec.length];
for(int i = 0 ;i<rec.length;i++){
ad[i] = new InternetAddress(rec[i]);
}
}else{
ad = new InternetAddress[1];
ad[0] = new InternetAddress(prop.getReceiveAddress());
}
mailMessage.setRecipients(Message.RecipientType.TO, ad);
mailMessage.setSubject(prop.getSubject());
mailMessage.setContent(prop.getContent(), "text/html;chartset=gbk");
mailMessage.setSentDate(new Date());
Transport.send(mailMessage);
return true;
}
public static boolean MailAttache(Mail_SendProper prop) throws MessagingException, UnsupportedEncodingException{
MailAttorney mailAttorney = null ;
//判断是否需要身份验证
if(prop.isValidate()){
mailAttorney = new MailAttorney(prop.getUsername(), prop.getPassword());
}
//根据邮件会话属性 和密码验证器
Session sendMailSession = Session.getInstance(prop.getProperties(),mailAttorney);
//消息对象
Message mailMessage = new MimeMessage(sendMailSession);
//发送者地址
Address internetAddress = new InternetAddress(prop.getSendAddress());
//设置发送者地址
mailMessage.setFrom(internetAddress);
//定义address数组
Address[] ad =null;
String[] rec = prop.getRecs();
if(rec!=null){
ad = new InternetAddress[rec.length];
for(int i = 0 ;i<rec.length;i++){
ad[i] = new InternetAddress(rec[i]);
}
}else{
ad = new InternetAddress[1];
ad[0] = new InternetAddress(prop.getReceiveAddress());
}
mailMessage.setRecipients(Message.RecipientType.TO, ad);
mailMessage.setSubject(prop.getSubject());
mailMessage.setSentDate(new Date());
// 向multipart对象中添加邮件的各个部分内容,包括文本内容和附件
Multipart multipart = new MimeMultipart();
// 设置邮件的文本内容
BodyPart contentPart = new MimeBodyPart();
contentPart.setText("邮件的具体内容在此");
multipart.addBodyPart(contentPart);
//添加附件
BodyPart messageBodyPart= new MimeBodyPart();
DataSource source = new FileDataSource("d:\\poi搞出来的.xls");
//添加附件的内容
messageBodyPart.setDataHandler(new DataHandler(source));
messageBodyPart.setFileName(MimeUtility.encodeText(source.getName(),"utf-8",null));
//添加附件的标题
//这里很重要,通过下面的Base64编码的转换可以保证你的中文附件标题名在发送时不会变成乱码
// BASE64Encoder enc = new BASE64MailboxEncoder();
//messageBodyPart.setFileName("=?GBK?B?"+enc.encode(affixName.getBytes())+"?=");
multipart.addBodyPart(messageBodyPart);
//将multipart对象放到message中
mailMessage.setContent(multipart);
Transport.send(mailMessage);
return true;
}
public static void main(String[] args) {
Mail_SendProper prop = new Mail_SendProper();
prop.setHost("smtp.163.com");
prop.setPort("25");
prop.setValidate(true);
prop.setSendAddress("a372849177@163.com");
prop.setUsername("a372849177@163.com");
prop.setPassword("*****");
String[] recs = new String[]{"huang@myxiaomai.com","372849177@qq.com"};
prop.setRecs(recs);
prop.setSubject("今天是"+new Date()+",keepmoving!");
StringBuffer sb = new StringBuffer();
sb.append("<h1>这是标题</h1>");
sb.append("<h2><font color=red>这倒霉孩子</font></h2>");
prop.setContent(sb.toString());
//发送邮件
try {
//boolean result = MailText(prop);
boolean result;
try {
result = MailAttache(prop);
if(result){
System.out.println("发送成功");
}
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (MessagingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}