package com.fengjing.javamail;
import java.util.Date;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.Multipart;
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 sun.misc.BASE64Encoder;
public class SendMail {
public static void main(String[] args) throws Exception{
Properties props=new Properties();
//設(shè)置采用郵箱認(rèn)證
props.setProperty("mail.smtp.auth", "true");
//獲得session
Session session=Session.getInstance(props);
//設(shè)置調(diào)試信息
session.setDebug(true);
//創(chuàng)建message
Message message=new MimeMessage(session);
//對(duì)message做些配置
//郵件主題
message.setSubject("這是用javamail寫(xiě)得帶附件的郵件");
//郵件發(fā)送人
message.setFrom(new InternetAddress("*****@163.com"));
//發(fā)送時(shí)間
message.setSentDate(new Date());
//設(shè)置收件人
/**
* RecipientType.TO 指定郵件發(fā)送類(lèi)型
* RecipientType.TO 直接發(fā)送
* RecipientType.CC 抄送
* RecipientType.BCC 暗送
* new Address[]{} 郵件接收人列表
*/
message.addRecipients(RecipientType.TO, new Address[]{
new InternetAddress("*******@sohu.com")
});
//使用message中的setText()方法發(fā)送文本文件
//message.setText("郵件正文");
/**
* "<span style='color:red'>這是用javamail發(fā)送的郵件正文</span>" 郵件內(nèi)容
* "text/html;charset=utf-8" 指定編碼
*/
//message.setContent("<span style='color:red'>這是用javamail發(fā)送的郵件正文</span>", "text/html;charset=utf-8");
/**********創(chuàng)建帶附件的郵件********************/
//創(chuàng)建Multipart對(duì)象,最后將Multipart對(duì)象添加到message中
Multipart multipart=new MimeMultipart();
//創(chuàng)建MimeBodyPart對(duì)象
MimeBodyPart mimeBodyPart=new MimeBodyPart();
//設(shè)置附件內(nèi)容
FileDataSource fds=new FileDataSource("d:\\5.jpg");
//設(shè)置附件的名字
/********************處理附件中文名亂碼***************************/
sun.misc.BASE64Encoder enc = new sun.misc.BASE64Encoder();
//System.out.println(enc.encode("徐熙媛.jpg".getBytes()));
mimeBodyPart.setFileName("=?GB2312?B?"+enc.encode("徐熙媛.jpg".getBytes())+"?=");
//處理附件
mimeBodyPart.setDataHandler(new DataHandler(fds));
multipart.addBodyPart(mimeBodyPart);
/********設(shè)置郵件正文內(nèi)容********/
//新創(chuàng)建MimeBodyPart對(duì)象,否則正文將會(huì)覆蓋掉附件內(nèi)容
mimeBodyPart=new MimeBodyPart();
//設(shè)置郵件正文內(nèi)容
mimeBodyPart.setContent("<span style='color:red'>這是用javamail發(fā)送的郵件正文</span>", "text/html;charset=utf-8");
//將MimeBodyPart添加到Multipart中
multipart.addBodyPart(mimeBodyPart);
//將multipart添加到message中
message.setContent(multipart);
//創(chuàng)建傳輸對(duì)象
Transport transport=session.getTransport("smtp");
//配置連接信息
/**
* smtp.sohu.com 指定主機(jī)
* 25 端口號(hào)
* sxyx 用戶名
* ******** 密碼
*/
transport.connect("smtp.sohu.com", 25, "sxyx", "*******");
//發(fā)送消息
/**
* message 消息內(nèi)容
* message.getAllRecipients() 收件人地址
* 返回
* message.addRecipients()方法中指定的郵件接收人列表
*/
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
}
文中提到的base64編碼其實(shí)可以替換為cos.jar(既歐萊里公司提供的文件上傳包)