欢迎访问悦橙教程(wld5.com),关注java教程。悦橙教程  java问答|  每日更新
页面导航 : > > > 文章正文

JavaSE:JavaMail笔记,javasejavamail笔记

来源: javaer 分享于  点击 14194 次 点评:282

JavaSE:JavaMail笔记,javasejavamail笔记


一、邮件协议:
1.SMTP为邮件传输协议,相应的服务器为邮件发送服务器(SMTP服务器)
SMTP服务器处理邮件发送

2.POP3为邮件接收协议,相应的服务器为邮件接收服务器(POP3服务器)
POP3服务器处理邮件接收

3.协议对应端口
HTTP:80
HTTPS:443
SMTP:25
POP3:110

4.创建邮件的协议
RFC822文档:简单邮件
MIME协议(对RFC822文档的升级和补充,又称MIME邮件,MIME协议描述的数据称为MIME消息,为复杂邮件):
MIME协议常用头字段:
Content-type头字段
数据关系
multipart/mixed,
multipart/related,
multipart/alternative,
Content-Disposition头字段(用于指定邮件阅读程序处理数据内容的方式)


二、通过Telnet手动发送和接收邮件:

1.建一个java类,对用户名与密码进行编码
System.out.print("请输入用户名:");
BufferedReader in = new BufferedReader(new InputStreamReader(System.in));
String userName = in.readLine();
System.out.print("请输入密码:");
String password = in.readLine();
BASE64Encoder encoder = new BASE64Encoder();
System.out.println("编码后的用户名为:" + encoder.encode(userName.getBytes()));
System.out.println("编码后的密码为:" + encoder.encode(password.getBytes()));

2.利用telnet连接smtp.sohu.com服务器发送邮件
打开cmd,输入telnet smtp.sohu.com 25 回车
ehlo 用户名     //随便输入用户名
auth login      //登陆标记
输入编码后的用户名   //在网上注册的邮件用户名,用B64编码后的值输
输入编码后的密码     //在网上注册的邮件密码,用B64编码后的值输
mail from:<email邮箱> //要输入该服务器注册的email
rcpt to:<email邮箱>   //接收人的真实email
data     //输入搞回车后开始写内容
from:<发送者email>   
to:<接收者email>
cc:<抄送者email>
bcc:<暗送者email>   //不会显示发送人的email
subject:主题
空一行
内容               //这里输入发送的内容
.                  //说明内容写完了
quit               //退出服务器连接

3.利用telnet连接smtp.sohu.com服务器接收邮件
user 用户名   //网上注册的用户名
pass 密码     //网上注册的密码
stat         //返回邮箱的统计信息
list         //返回某一封邮件的统计信息
retr        //最重要的一个命令
quit        //退出服务器连接


三、邮件发送程序开发:

(1)自已建java类连接邮件服务器并发送邮件
Socket sock = new Socket("smtp.sohu.com",25);
BufferedReader in = new BufferedReader(new InputStreamReader(sock.getInputStream()));
OutputStream out = sock.getOutputStream();
System.out.println(in.readLine());
out.write("ehlo wangwu\r\n".getBytes());
System.out.println(in.readLine());
System.out.println(in.readLine());
System.out.println(in.readLine());
out.write("auth login\r\n".getBytes());
System.out.println(in.readLine());
out.write("编码后的用户名\r\n".getBytes());
System.out.println(in.readLine());
out.write("编码后的密码\r\n".getBytes());

(2)用apache开发的JavaMail_API开发邮件发送程序
1.导包:activation.jar和mail.jar

2.建一个类,用于生成一封带图片的邮件
Session session = Session.getDefaultInstance(new Properties());
MimeMessage message = new MimeMessage();   //MimeMessage类表示整封邮件
message.setFrom(new InternetAddress("aaa@126.com")); //设置
message.setRecipient(Message.RecipientType.TO,new InternetAddress("bbb@126.com"));
message.setSubject("邮件标题");
//正文数据
MimeBodyPart text = new MimeBodyPart();   //MimeBodyPart类表示邮件的一个MIME消息
text.setContent("正文内容<img src='cid:图片ID'>","text/html");
//正文图片
MimeBodyPart image = new MimeBodyPart();
//附件
MimeBodyPart attach = new MimeBodyPart();
DataHandler dh = new DataHandler(new FileDataSource("附件路径"));
attach.setDataHandler(dh);
attach.setFileName();
//将图片和数据处理器相关联
DataHandler dh = new DataHandler(new FileDataSource("图片路径"));
image.setDataHandler(dh);
image.setContentID("该图片ID");
//描述正文文字与正文图片之关的关系
MimeMultipart mm = new MimeMultipart();  //MimeMultipart类表示一个由多个MIME消息组合成的组合MIME消息。
mm.addBodyPart(text);
mm.addBodyPart(image);
mm.setSubType("telated");  //正文图片
mm.setSubType("mixed");    //附件
//把容器加到邮件中
message.setContent(mm);
message.saveChanges();
//看效果
message.writeTo(new FileOutputStream("c:\\1.eml"));

3.发送生成的邮件

四、邮件接收程序开发:

相关文章

    暂无相关文章

用户点评