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(既欧莱里公司提供的文件上传包)