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();
//設置采用郵箱認證
props.setProperty("mail.smtp.auth", "true");
//獲得session
Session session=Session.getInstance(props);
//設置調試信息
session.setDebug(true);
//創建message
Message message=new MimeMessage(session);
//對message做些配置
//郵件主題
message.setSubject("這是用javamail寫得帶附件的郵件");
//郵件發送人
message.setFrom(new InternetAddress("*****@163.com"));
//發送時間
message.setSentDate(new Date());
//設置收件人
/**
* RecipientType.TO 指定郵件發送類型
* RecipientType.TO 直接發送
* RecipientType.CC 抄送
* RecipientType.BCC 暗送
* new Address[]{} 郵件接收人列表
*/
message.addRecipients(RecipientType.TO, new Address[]{
new InternetAddress("*******@sohu.com")
});
//使用message中的setText()方法發送文本文件
//message.setText("郵件正文");
/**
* "<span style='color:red'>這是用javamail發送的郵件正文</span>" 郵件內容
* "text/html;charset=utf-8" 指定編碼
*/
//message.setContent("<span style='color:red'>這是用javamail發送的郵件正文</span>", "text/html;charset=utf-8");
/**********創建帶附件的郵件********************/
//創建Multipart對象,最后將Multipart對象添加到message中
Multipart multipart=new MimeMultipart();
//創建MimeBodyPart對象
MimeBodyPart mimeBodyPart=new MimeBodyPart();
//設置附件內容
FileDataSource fds=new FileDataSource("d:\\5.jpg");
//設置附件的名字
/********************處理附件中文名亂碼***************************/
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);
/********設置郵件正文內容********/
//新創建MimeBodyPart對象,否則正文將會覆蓋掉附件內容
mimeBodyPart=new MimeBodyPart();
//設置郵件正文內容
mimeBodyPart.setContent("<span style='color:red'>這是用javamail發送的郵件正文</span>", "text/html;charset=utf-8");
//將MimeBodyPart添加到Multipart中
multipart.addBodyPart(mimeBodyPart);
//將multipart添加到message中
message.setContent(multipart);
//創建傳輸對象
Transport transport=session.getTransport("smtp");
//配置連接信息
/**
* smtp.sohu.com 指定主機
* 25 端口號
* sxyx 用戶名
* ******** 密碼
*/
transport.connect("smtp.sohu.com", 25, "sxyx", "*******");
//發送消息
/**
* message 消息內容
* message.getAllRecipients() 收件人地址
* 返回
* message.addRecipients()方法中指定的郵件接收人列表
*/
transport.sendMessage(message, message.getAllRecipients());
transport.close();
}
}
文中提到的base64編碼其實可以替換為cos.jar(既歐萊里公司提供的文件上傳包)