package com.svse.javamail;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Address;
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 javax.mail.internet.MimeUtility;
//demo的副本
public class Demo2 {
public static void main(String []args)throws Exception{
//配置环境
Properties props=new Properties();
//是否要求认证
props.setProperty("mail.smtp.auth","true");
props.setProperty("mail.transport.protocol","smtp");
//创建session对象,它需要一个props
Session session=Session.getInstance(props);
//调试信息
session.setDebug(true);
//创建一封邮件MimeMessage,他需要一个session对象
MimeMessage msg=new MimeMessage(session);
//主题
msg.setSubject("给易水寒的答复");
//发件人显示为胡进辉博客
msg.setFrom(new InternetAddress("\""+MimeUtility.encodeText("胡进辉博客")+"\"<hujinhuiisgood@163.com>"));
//对方收到邮件,回复给谁,这里可以填自己邮箱,也可以填别人的邮箱
msg.setReplyTo(new Address[]{new InternetAddress("hujinhuiisgood@163.com")});
//多个收件人
msg.setRecipients(RecipientType.TO,InternetAddress.parse(MimeUtility.encodeText("易水寒")+" <505153452@qq.com>," +MimeUtility.encodeText("西门吹雪") +" <hujinhuiisgood@sina.com>"));
//创建复杂体,复杂体的类型指定为mixed
//表示这个邮件的混合体,包括body和附件,具体看img文件下的图片
MimeMultipart msgMimeMultipart=new MimeMultipart("mixed");
//MimeMultipart表示复杂的组合体
//设置内容,加载复杂体,复杂体作为信件的内容
msg.setContent(msgMimeMultipart);
//复杂体的组成部分
//信件内容
MimeBodyPart content=new MimeBodyPart();
//附件1
MimeBodyPart attch1=new MimeBodyPart();
//附件2
MimeBodyPart attch2=new MimeBodyPart();
//把内容,附件,加载到复制体里面
msgMimeMultipart.addBodyPart(attch1);
msgMimeMultipart.addBodyPart(attch2);
msgMimeMultipart.addBodyPart(content);
//上面的已经把框架搭好了,下面就是 构建里面的具体内容
//DataHandler用于包装一个文件的数据
//创建数据源
DataSource ds=new FileDataSource("D:\\andoid\\品文化.txt");
//创建一个DataHandler,他需要一个数据源
DataHandler dh1=new DataHandler(ds);
//加载附件dh1
attch1.setDataHandler(dh1);
//附件名
//解决中文编码,正常显示中文文件名
attch1.setFileName(MimeUtility.encodeText("中文wj.txt"));
//附件2
DataSource ds2=new FileDataSource("D:\\55647.gif");
DataHandler dh2=new DataHandler(ds2);
attch2.setDataHandler(dh2);
attch2.setFileName("logo.gif");
//内容,内容是个复杂体
//插入的图片和内容是关联关系
MimeMultipart bodyMimeMultipart=new MimeMultipart("related");
//内容是复杂体
content.setContent(bodyMimeMultipart);
//复杂体的组成部分
MimeBodyPart htmlpart=new MimeBodyPart();
MimeBodyPart gifpart=new MimeBodyPart();
//把内容和图片加载到复杂体上
bodyMimeMultipart.addBodyPart(gifpart);
bodyMimeMultipart.addBodyPart(htmlpart);
DataSource gifds = new FileDataSource("D:\\zh.gif");
//和上面一样,需要一个DataHandler的箱子,而箱子内面的内容和数据源,又来源于datasource
DataHandler gifdh=new DataHandler(gifds);
//给内容插入图片
gifpart.setDataHandler(gifdh);
gifpart.setHeader("Content-Location","http://mail.163.com/zh.gif");
htmlpart.setContent("天气晚来秋,没有数据库<img src='http://mail.163.com/zh.gif'>","text/html;charset=gbk");
//结束生成复杂文本
msg.saveChanges();
//这首msg就可以交给transport来发了
//制造火箭
Transport transport=session.getTransport();
transport.connect("smtp.163.com",25,"hujinhuiisgood@163.com","邮箱登陆密码");
//发送和收件人
transport.sendMessage(msg,new Address[]{new InternetAddress("hujinhuiisgood@sina.com")});
transport.close();
}
}