本文实例讲述了基于JavaMail API收发邮件的方法。分享给大家供大家参考。具体如下:
1.JavaMail API按其功能划分通常可分为如下三大类
(1)创建和解析邮件内容的API :Message类是创建和解析邮件的核心API,它的实例对象代表一封电子邮件。
(2)发送邮件的API:Transport类是发送邮件的核心API类,它的实例对象代表实现了某个邮件发送协议的邮件发送对象,例如SMTP协议。
(3)接收邮件的API:Store类是接收邮件的核心API类,它的实例对象代表实现了某个邮件接收协议的邮件接收对象,例如POP3协议。
2. Session类
Session类用于定义整个应用程序所需的环境信息,以及收集客户端与邮件服务器建立网络连接的会话信息,如邮件服务器的主机名、端口号、采用的邮件发送和接收协议等。Session对象根据这些信息构建用于邮件收发的Transport和Store对象,以及为客户端创建Message对象时提供信息支持。
3.使用JavaMail发送一封简单的邮件
创建包含邮件服务器的网络连接信息的Session对象。
创建代表邮件内容的Message对象。
创建Transport对象、连接服务器、发送Message、关闭连接。
4.实例
(1)JavaMail邮件只发送内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
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( "jb51" , "jb51" );
tsp.sendMessage(message, message.getAllRecipients());
tsp.close();
}
public static Message createMessage(Session session) throws Exception{
//根据环境对象创建一份邮件
MimeMessage message= new MimeMessage(session);
//设置邮件属性
message.setFrom( new InternetAddress( "jb51@sohu.com" ));
message.setRecipient(Message.RecipientType.TO, new InternetAddress( "jb51@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邮件发送内容和图片
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
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( "jb51" , "jb51" );
tsp.sendMessage(message, message.getAllRecipients());
tsp.close();
}
public static Message createMessage(Session session) throws Exception{
MimeMessage message= new MimeMessage(session);
message.setFrom( new InternetAddress( "jb51@sohu.com" ));
message.setRecipient(Message.RecipientType.TO, new InternetAddress( "jb51@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邮件发送内容、图片和附件
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
|
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( "jb51" , "jb51" );
tsp.sendMessage(message, message.getAllRecipients());
tsp.close();
}
public static Message createMessage(Session session) throws Exception{
MimeMessage message= new MimeMessage(session);
message.setFrom( new InternetAddress( "jb51@sohu.com" ));
message.setRecipient(Message.RecipientType.TO, new InternetAddress( "jb51@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;
}
}
|
注:邮箱地址必须是真实的
希望本文所述对大家的java程序设计有所帮助。