import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.DataSource;
import javax.activation.FileDataSource;
import javax.mail.Authenticator;
import javax.mail.MessagingException;
import javax.mail.PasswordAuthentication;
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;/**
*
* @author Administrator Mr XP.Wang
* MimeMultipart 一般电子邮件的容器是Multipart,定义了增加及删除电子邮件各部分内容的方法,
* 但是其是抽象类,需要其子类MimeMultipart来时用MimeMessage对象
* MimeBodyPart 是BodyPart具体用于mimeMessage的一个子类,MimeBodyPart对象代表一个
* mimeMultipart对象的每一个部分
* MimeUtility.encodeText(String cn)用于解决邮件中的头部信息中中文的乱码问题
**/
public classDemo3_test {public static voidmain(String[] args) throws Exception {
Properties properties= newProperties();
properties.setProperty("mail.smtp.auth", "true");//服务器需要认证
properties.setProperty("mail.transport.protocol", "smtp");//声明发送邮件使用的端口
properties.setProperty("mail.host", "smtp.126.com");//发送邮件的服务器地址
Session session= Session.getInstance(properties, newAuthenticator() {
String sendUserName= "wangxiangpan@126.com";
String sendPassword= "pwd";protectedPasswordAuthentication getPasswordAuthentication() {return newPasswordAuthentication(sendUserName,
sendPassword);
}
});
session.setDebug(true);
MimeMessage msg= new MimeMessage(session);//声明一个邮件体
msg.setFrom(new InternetAddress("/""+MimeUtility.encodeText("Mr XP.Wang")+"/""));
msg.setSubject("这是我的第一份复杂邮件");//设置邮件主题
msg.setRecipients(MimeMessage.RecipientType.TO, InternetAddress.parse(MimeUtility.encodeText("王翔攀")+","+MimeUtility.encodeText("三毛")+"<492134880@qq.com>"));
MimeMultipart msgMultipart= new MimeMultipart("mixed");//标明邮件的组合关系,混合的关系
msg.setContent(msgMultipart);//设置邮件体
MimeBodyPart attch1= new MimeBodyPart();//附件1
MimeBodyPart attch2 = new MimeBodyPart();//附件2
MimeBodyPart content = new MimeBodyPart();//邮件的正文,混合体(图片+文字)//将附件和正文设置到这个邮件体中
msgMultipart.addBodyPart(attch1);
msgMultipart.addBodyPart(attch2);
msgMultipart.addBodyPart(content);//设置第一个附件
DataSource ds1 = new FileDataSource("F:/ACCP5.0/文件/ssh配置.txt");//指定附件的数据源
DataHandler dh1 = new DataHandler(ds1);//附件的信息
attch1.setDataHandler(dh1);//指定附件
attch1.setFileName("ssh.txt");//设置第二个附件
DataSource ds2 = new FileDataSource("resource/48.jpg");//指定附件的数据源
DataHandler dh2 = new DataHandler(ds2);//附件的信息
attch2.setDataHandler(dh2);//指定附件
attch2.setFileName("48.jpg");//设置邮件的正文
MimeMultipart bodyMultipart = new MimeMultipart("related");//依赖关系
content.setContent(bodyMultipart);//指定正文
MimeBodyPart htmlPart = newMimeBodyPart();
MimeBodyPart gifPart= newMimeBodyPart();
bodyMultipart.addBodyPart(htmlPart);
bodyMultipart.addBodyPart(gifPart);
DataSource gifds= new FileDataSource("resource/48.jpg");//正文的图片
DataHandler gifdh = newDataHandler(gifds);
gifPart.setHeader("Content-Location", "http://mimg.126.net/logo/126logo.gif");
gifPart.setDataHandler(gifdh);//设置正文的图片
htmlPart.setContent("我只是来打酱油的,这是我的形象照!", "text/html;charset=gbk");//设置正文文字
msg.saveChanges();//保存邮件//将邮件保存成文件
OutputStream ops = new FileOutputStream("C:/Users/Administrator/Desktop/test.eml");
msg.writeTo(ops);
ops.close();
Transport.send(msg);
}
}