本文实例讲解了java发邮件的详细过程,供大家参考,具体内容如下
1、邮件协议
发邮件的:SMTP (Simple Mail Transport Protocal)
收邮件的协议:pop3 (Post Office Protocal 3)
IMAP 新协议 发邮件也可以收邮件。
(一步步的与服务器交互)
SMTP :
2、收发邮件的过程:
一般情况下,smtp和pop3是两个服务器(主机)。
Smtp邮件的端口为25。
POP3 端口 为110。
发邮件示例
1)、安装foxmail:
2)、发邮件时,要对用户名和密码进行base64编码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
//对用户名和密码进行base64编码
@Test
public void base64(){
String name = "wj_leaf12345" ;
String pwd = "1qaz2wsx" ;
BASE64Encoder en = new BASE64Encoder();
name = en.encode(name.getBytes());
pwd = en.encode(pwd.getBytes());
System.err.println(name);
System.err.println(pwd);
}
|
3)、通过java代码发邮件
用java发邮件,必须要导入新的包
mail.jar – 发邮件的核心包
activation.jar – 对用户和密码加密.
在mail.jar中有三个核心类:
Javax.mail.Session – 是指与邮件服务器会话。整个项目中只要一个就可以了.
Javax.mail.Message(接口) —准备发送数据信息。
MimeMessage - 可以设置类型的数据信息。
Transport – 它拥有一个方法可以发送Message。
第一步:导入两个jar包
第二步:发简单的邮件
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
|
public void sendMail() throws Exception{
//第一步:声明properties对象放信息
Properties prop = new Properties();
//设置连接哪一台服务器
prop.setProperty( "mail.host" , "smtp.126.com" );
//设置是否验证
prop.setProperty( "mail.smtp.auth" , "true" );
//第二步:声明用户名和密码
Authenticator auth = new Authenticator() {
//此访求返回用户和密码的对象
public PasswordAuthentication getPasswordAuthentication() {
PasswordAuthentication pa =
new PasswordAuthentication( "aaa" , "sss" );
return pa;
}
};
////第二步:获取Session对象
Session session =
Session.getDefaultInstance(prop,auth);
//设置session的调试模式
session.setDebug( true );
//第三步:声明信息
MimeMessage mm1 =
new MimeMessage(session);
//第四步:设置发件人email
Address from = new InternetAddress( "wj@126.com" );
mm1.setFrom(from);
//第五步:设置收件人
mm1.setRecipient(RecipientType.TO, new InternetAddress( "wj@163.com" ));
mm1.setRecipient(RecipientType.CC, new InternetAddress( "554@qq.com" ));
mm1.setRecipient(RecipientType.BCC, new InternetAddress( "wj@ss.cn" ));
//第六步:设置主题
mm1.setSubject( "这是用Java发的邮件3" );
mm1.setContent( "你好,这是用java发的邮件,3333再试一下" , "text/plain;charset=UTF-8" );
//第七步:
Transport.send(mm1);
}
|
第三步:v发带有超连接的邮件
1
2
3
4
5
6
|
mm1.setSubject( "这是用Java发的邮件sfasdf3" );
mm1.setContent( "你好,这是用java发的邮件,<a href='http://www.baidu.com'>百度</a>" , "text/html;charset=UTF-8" );
//第七步:
Transport.send(mm1);
|
第四步:符件的邮件
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
48
49
50
51
52
53
|
public void sendFile() throws Exception{
Properties p = new Properties();
p.setProperty( "mail.host" , "smtp.163.com" );
p.setProperty( "mail.smtp.auth" , "true" );
Session s = Session.getDefaultInstance(p, new Authenticator() {
@Override
public PasswordAuthentication getPasswordAuthentication() {
return new PasswordAuthentication( "ww" , "123" );
}
});
s.setDebug( true );
//声明MimeMessage
MimeMessage msg = new MimeMessage(s);
msg.setFrom( new InternetAddress( "ww@163.com" ));
msg.setRecipient(RecipientType.TO, new InternetAddress( "ww@126.com" ));
//第一步:声明多处理的Part
MimeMultipart mm = new MimeMultipart();
//第二步:声明
MimeBodyPart body1 = new MimeBodyPart();
//第三步:设置符件
DataSource ds = new FileDataSource( new File( "./img/a.jpg" ));
DataHandler dh = new DataHandler(ds);
body1.setDataHandler(dh);
//必须要设置名称
body1.setFileName(MimeUtility.encodeText( "美女.jpg" ));
MimeBodyPart body2 = new MimeBodyPart();
//第三步:设置符件
DataSource ds2 = new FileDataSource( new File( "./img/b.jpg" ));
DataHandler dh2 = new DataHandler(ds2);
body2.setDataHandler(dh2);
//必须要设置名称
body2.setFileName(MimeUtility.encodeText( "美女2.jpg" ));
MimeBodyPart body3 = new MimeBodyPart();
//第三步:设置符件
DataSource ds3 = new FileDataSource( new File( "./img/m.mp3" ));
DataHandler dh3 = new DataHandler(ds3);
body3.setDataHandler(dh3);
//必须要设置名称
body3.setFileName(MimeUtility.encodeText( "世纪末.mp3" ));
//将body1添加到mm
mm.addBodyPart(body1);
mm.addBodyPart(body2);
mm.addBodyPart(body3);
msg.setContent(mm);
//发送
Transport.send(msg);
}
|
以上就是本文的全部内容,希望对大家的学习有所帮助。