使用JavaMail实现发送邮件,包括纯文本邮件,包含图片的文件以及带有附件的邮件。
发送邮件的步骤都是固定的,创建邮件的时候,方法会有所不同。
package com.sudytech.email;
import java.io.FileOutputStream;
import java.util.Properties;
import javax.activation.DataHandler;
import javax.activation.FileDataSource;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeBodyPart;
import javax.mail.internet.MimeMessage;
import javax.mail.internet.MimeMultipart;
public class Email {
public static void main(String[] args) throws Exception {
new Email().send();
}
public void send() throws Exception{
Properties prop=new Properties();
prop.setProperty("mail.host", "smtp.sohu.com");
prop.setProperty("mail.transport.protocol", "smtp");
prop.setProperty("mail.smtp.auth", "true");
Session session=Session.getInstance(prop);
session.setDebug(true);
// Message message=this.createMessage(session);
// Message message=this.createMessage1(session);
// Message message=this.createMessage2(session);
Message message=this.createMessage3(session);
Transport tr=session.getTransport();
tr.connect("smtp.qq.com","424457896","aaa123aaa");
tr.sendMessage(message,message.getAllRecipients());
tr.close();
}
/**
* 纯文本邮件
*/
public MimeMessage createMessage(Session session) throws Exception{
MimeMessage message=new MimeMessage(session);
message.setFrom(new InternetAddress("424457896@qq.com"));
message.setSubject("纯文本邮件");
message.setRecipient(Message.RecipientType.TO, new InternetAddress("424457896@qq.com"));
message.setContent("我是纯文本","text/html;charset=UTF-8");
return message;
}
/**
* 带有图片的邮件
*/
public MimeMessage createMessage1(Session session) throws Exception{
MimeMessage message=new MimeMessage(session);
message.setFrom(new InternetAddress("424457896@qq.com"));
message.setSubject("带图片的邮件");
message.setRecipient(Message.RecipientType.TO, new InternetAddress("424457896@qq.com"));
//纯文本
MimeBodyPart text=new MimeBodyPart();
text.setContent("这是一封邮件正文带图片<img src='cid:xxx.jpg'>的邮件", "text/html;charset=UTF-8");
//图片
MimeBodyPart image = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource("src\\5.jpg"));
image.setDataHandler(dh);
image.setContentID("xxx.jpg");
//描述数据关系
MimeMultipart mm = new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.setSubType("related");
message.setContent(mm);
message.saveChanges();
//将创建好的邮件写入到E盘以文件的形式进行保存
// message.writeTo(new FileOutputStream("E:\\ImageMail.eml"));
return message;
}
/**
* 带有附件的邮件
*/
public MimeMessage createMessage2(Session session) throws Exception{
MimeMessage message=new MimeMessage(session);
message.setFrom(new InternetAddress("424457896@qq.com"));
message.setSubject("带有附件的邮件");
message.setRecipient(Message.RecipientType.TO, new InternetAddress("424457896@qq.com"));
//纯文本
MimeBodyPart text=new MimeBodyPart();
text.setContent("这是一封邮件正文带附件的邮件", "text/html;charset=UTF-8");
//附件
MimeBodyPart attach = new MimeBodyPart();
DataHandler dh=new DataHandler(new FileDataSource("src\\5.jpg"));
attach.setDataHandler(dh);
attach.setFileName(dh.getName());
//描述数据关系
MimeMultipart mm=new MimeMultipart();
mm.addBodyPart(text);
mm.addBodyPart(attach);
mm.setSubType("mixed");
message.setContent(mm);
message.saveChanges();
return message;
}
/**
* 带有图片和附件的邮件
*/
public MimeMessage createMessage3(Session session) throws Exception{
MimeMessage message=new MimeMessage(session);
message.setFrom(new InternetAddress("424457896@qq.com"));
message.setSubject("纯文本,图片和附件的邮件");
message.setRecipient(Message.RecipientType.TO, new InternetAddress("424457896@qq.com"));
//纯文本
MimeBodyPart text=new MimeBodyPart();
text.setContent("这是一封邮件正文带图片和附件的邮件,图片是<img src='cid:xxx.jpg' />", "text/html;charset=UTF-8");
//图片
MimeBodyPart image=new MimeBodyPart();
DataHandler dh=new DataHandler(new FileDataSource("src\\5.jpg"));
image.setDataHandler(dh);
image.setContentID("xxx.jpg");
//描述关系,纯文本和图片
MimeMultipart mm1=new MimeMultipart();
mm1.addBodyPart(text);
mm1.addBodyPart(image);
mm1.setSubType("related");
//先把mm1放进MimeBodypart的content里面,最后将content与attach1放进MimeMultipart的mm2里面,相当于把mm1和mm2整合到了一起
MimeBodyPart content=new MimeBodyPart();
content.setContent(mm1);
//附件1
MimeBodyPart attach1=new MimeBodyPart();
DataHandler dh1=new DataHandler(new FileDataSource("src\\5.jpg"));
attach1.setDataHandler(dh1);
attach1.setFileName(dh1.getName());
MimeMultipart mm2=new MimeMultipart();
mm2.addBodyPart(attach1);
mm2.addBodyPart(content);
mm2.setSubType("mixed");
message.setContent(mm2);
message.saveChanges();
return message;
}
}