使用JavaMail API收发邮件

时间:2021-12-22 18:09:25

使用JavaMail API收发邮件

1.JavaMail API按其功能划分通常可分为如下三大类

(1)创建和解析邮件内容的API Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。 

(2)发送邮件的APITransport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。 

(3)接收邮件的APIStore类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。 

2. Session 

Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的TransportStore对象,以及为客户端创建Message对象时提供信息支持。

3.使用JavaMail发送一封简单的邮件

创建包含邮件服务器的网络连接信息的Session对象。 

创建代表邮件内容的Message对象。 

创建Transport对象、连接服务器、发送Message、关闭连接。 

4.实例

 (1JavaMail邮件只发送内容

public class SendMail {

public static void main(String[] args) throws Exception {

//属性文件

Properties props=new Properties();

//设置邮件的发送主机名、发送协议和是否验证

props.setProperty("mail.host","smtp.sohu.com" );

props.setProperty("mail.transport.protocol", "smtp");

props.setProperty("mail.smtp.auth", "true");

//获取发送接收邮件环境的对象

Session session=Session.getInstance(props);

Message message=createMessage(session);

//创建发送邮件的对象

Transport tsp=session.getTransport();

tsp.connect("csdn", "csdn");

tsp.sendMessage(message, message.getAllRecipients());

tsp.close();

}

public static Message createMessage(Session session) throws Exception{

//根据环境对象创建一份邮件

MimeMessage message=new MimeMessage(session);

//设置邮件属性

message.setFrom(new InternetAddress("csdn@sohu.com"));

message.setRecipient(Message.RecipientType.TO,new  InternetAddress("csdn@sina.com"));

message.setSubject("hello");

//创建邮件体

MimeBodyPart text=new MimeBodyPart();

text.setContent("你好?","text/html;charset=utf-8");

//设置描述关系

MimeMultipart mm=new MimeMultipart();

mm.addBodyPart(text);

message.setContent(mm);

message.saveChanges();

return message;

}

}

(2)JavaMail邮件发送内容和图片

public class SendImageMail {

public static void main(String[] args) throws Exception {

//属性文件

Properties props=new Properties();

//设置邮件的发送主机名、发送协议和是否验证

props.setProperty("mail.host","smtp.sohu.com" );

props.setProperty("mail.transport.protocol", "smtp");

props.setProperty("mail.smtp.auth", "true");

//获取发送接收邮件环境的对象

Session session=Session.getInstance(props);

Message message=createMessage(session);

//创建发送邮件的对象

Transport tsp=session.getTransport();

tsp.connect("csdn", "csdn");

tsp.sendMessage(message, message.getAllRecipients());

tsp.close();

}

public static Message createMessage(Session session) throws Exception{

MimeMessage message=new MimeMessage(session);

message.setFrom(new InternetAddress("csdn@sohu.com"));

message.setRecipient(Message.RecipientType.TO,new  InternetAddress("csdn@sina.com"));

message.setSubject("图片");

MimeBodyPart text=new MimeBodyPart();

text.setContent("好看吗?<br/><img  src='cid:xx.jpg'>","text/html;charset=utf-8");

MimeBodyPart image=new MimeBodyPart();

image.setDataHandler(new DataHandler(new  FileDataSource("src//f.jpg")));

image.setContentID("xx.jpg");

MimeMultipart mm=new MimeMultipart();

mm.addBodyPart(text);

mm.addBodyPart(image);

mm.setSubType("related");

message.setContent(mm);

message.saveChanges();

return message;

}

}

(3)JavaMail邮件发送内容、图片和附件

public class SendAttchImageMail {

public static void main(String[] args) throws Exception {

//属性文件

Properties props=new Properties();

//设置邮件的发送主机名、发送协议和是否验证

props.setProperty("mail.host","smtp.sohu.com" );

props.setProperty("mail.transport.protocol", "smtp");

props.setProperty("mail.smtp.auth", "true");

//获取发送接收邮件环境的对象

Session session=Session.getInstance(props);

Message message=createMessage(session);

//创建发送邮件的对象

Transport tsp=session.getTransport();

tsp.connect("csdn", "csdn");

tsp.sendMessage(message, message.getAllRecipients());

tsp.close();

}

public static Message createMessage(Session session) throws Exception{

MimeMessage message=new MimeMessage(session);

message.setFrom(new InternetAddress("csdn@sohu.com"));

message.setRecipient(Message.RecipientType.TO,new  InternetAddress("csdn@sina.com"));

message.setSubject("图片");

MimeBodyPart text=new MimeBodyPart();

text.setContent("好看吗?<br/><img  src='cid:xx.jpg'>","text/html;charset=utf-8");

MimeBodyPart image=new MimeBodyPart();

image.setDataHandler(new DataHandler(new  FileDataSource("src//f.jpg")));

image.setContentID("xx.jpg");

MimeBodyPart attch=new MimeBodyPart();

DataHandler dh=new DataHandler(new FileDataSource("src//默默无 语.mp3"));

attch.setDataHandler(dh);

String name=dh.getName();

attch.setFileName(MimeUtility.encodeText(name));

MimeMultipart mm=new MimeMultipart();

mm.addBodyPart(text);

mm.addBodyPart(image);

mm.setSubType("related");

MimeBodyPart part=new MimeBodyPart();

part.setContent(mm);

MimeMultipart m=new MimeMultipart();

m.addBodyPart(part);

m.addBodyPart(attch);

m.setSubType("mixed");

message.setContent(m);

message.saveChanges();

return message;

}

}

:邮箱地址必须是真实的