javamail开发(一)
2014-02-25 17:28
344 查看
邮件服务器和电子邮件简介:
邮件传输协议和邮件服务器类型:
SMTP协议:
用户连接邮件服务器后,要想给它发送一封电子邮件,要遵循一定的通信规则,SMTP协议就是用于定义这种通信规则的。我们常把处理用户smtp请求的(邮件发送请求)的邮件服务器称之为SMTP服务器,端口号为25.
POP3协议:
用户若想从邮件服务器管理邮件的电子邮箱中接受一份电子邮件,它连接邮件服务器后,也需要遵循一定的通信格式,pop3协议用于定义这种通信格式。
因而,通常我们也把处理用户pop3请求(邮件接受请求)的邮件服务器称之为pop3服务器。端口号是110.
SMTP负责发送邮件,POP3负责接受邮件。一个邮件系统需要两天服务器,一个是接受服务器,一个是发送服务器。
下面是发送和接受邮件的示例图,aaa@sohu.com用户给bbb@sina.com发送一封邮件(跨服务器发送邮件)。
三.根据SMTP规定,发送邮件的几个步骤:
1. ehlo xxxx
2. auth login //登录
用户名 //必须是经过BASE64编码
密码 //必须是经过BASE64编码
3. mail from<aaa@sohu.com>
4. rept to:<bbb@sina.com>
5. data命令,开始写信
信的内容xxxxxxxxxx
. //信写完后,一定要以“."表示信写完了
6. quit //退出, 此时将会想服务器发送一封邮件。
四. 根据RFC822协议规定,标准邮件格式需要有from, to, subject等字段。如下:
下面是一个java程序实例:
Socket socket = new Socket("smtp.163.com",25);
OutputStream out = socket.getOutputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(in.readLine());
out.write("ehlo aaa\r\n".getBytes());
String str;
while(!(str=in.readLine()).equals("250 8BITMIME")){
System.out.println(str);
}
System.out.println(str);
// System.out.println(in.readLine());
// System.out.println(in.readLine());
// System.out.println(in.readLine());
// System.out.println(in.readLine());
// 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("d3V3c18wMDAwMUAxNjMuY29t\r\n".getBytes());
System.out.println(in.readLine());
out.write("ODUwODI4c3N3cXNzd3E=\r\n".getBytes());
System.out.println(in.readLine());
out.write("mail from:<aaa@163.com>\r\n".getBytes());
System.out.println(in.readLine());
out.write("rcpt to:<bbb@sina.com>\r\n".getBytes());
System.out.println(in.readLine());
out.write("data\r\n".getBytes());
out.write("from:<aaa@163.com>\r\n".getBytes());
out.write("to:<bbb@sina.com>\r\n".getBytes());
out.write("subject:demo r\n".getBytes());
out.write("\r\n".getBytes());
out.write("aaaaaaaaaaaaaaa\r\n".getBytes());
out.write(".\r\n".getBytes());
System.out.println(in.readLine());
五. pop3协议:
邮件传输协议和邮件服务器类型:
SMTP协议:
用户连接邮件服务器后,要想给它发送一封电子邮件,要遵循一定的通信规则,SMTP协议就是用于定义这种通信规则的。我们常把处理用户smtp请求的(邮件发送请求)的邮件服务器称之为SMTP服务器,端口号为25.
POP3协议:
用户若想从邮件服务器管理邮件的电子邮箱中接受一份电子邮件,它连接邮件服务器后,也需要遵循一定的通信格式,pop3协议用于定义这种通信格式。
因而,通常我们也把处理用户pop3请求(邮件接受请求)的邮件服务器称之为pop3服务器。端口号是110.
SMTP负责发送邮件,POP3负责接受邮件。一个邮件系统需要两天服务器,一个是接受服务器,一个是发送服务器。
下面是发送和接受邮件的示例图,aaa@sohu.com用户给bbb@sina.com发送一封邮件(跨服务器发送邮件)。
三.根据SMTP规定,发送邮件的几个步骤:
1. ehlo xxxx
2. auth login //登录
用户名 //必须是经过BASE64编码
密码 //必须是经过BASE64编码
3. mail from<aaa@sohu.com>
4. rept to:<bbb@sina.com>
5. data命令,开始写信
信的内容xxxxxxxxxx
. //信写完后,一定要以“."表示信写完了
6. quit //退出, 此时将会想服务器发送一封邮件。
四. 根据RFC822协议规定,标准邮件格式需要有from, to, subject等字段。如下:
ehlo xxx auth login 用户名 //BASE64Encode编码 密码 ////BASE64Encode编码 mail from:<aaa@163.com> rcpt to:<bbb@sina.com> data from:<aaa@163.com> to:<bbb@sina.com> subject:test //此处为空行 xxxxxxxxxxxxxxxxx xxxxxxxxxxxxxxxxxxxxxx . quit
下面是一个java程序实例:
Socket socket = new Socket("smtp.163.com",25);
OutputStream out = socket.getOutputStream();
BufferedReader in = new BufferedReader(new InputStreamReader(socket.getInputStream()));
System.out.println(in.readLine());
out.write("ehlo aaa\r\n".getBytes());
String str;
while(!(str=in.readLine()).equals("250 8BITMIME")){
System.out.println(str);
}
System.out.println(str);
// System.out.println(in.readLine());
// System.out.println(in.readLine());
// System.out.println(in.readLine());
// System.out.println(in.readLine());
// 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("d3V3c18wMDAwMUAxNjMuY29t\r\n".getBytes());
System.out.println(in.readLine());
out.write("ODUwODI4c3N3cXNzd3E=\r\n".getBytes());
System.out.println(in.readLine());
out.write("mail from:<aaa@163.com>\r\n".getBytes());
System.out.println(in.readLine());
out.write("rcpt to:<bbb@sina.com>\r\n".getBytes());
System.out.println(in.readLine());
out.write("data\r\n".getBytes());
out.write("from:<aaa@163.com>\r\n".getBytes());
out.write("to:<bbb@sina.com>\r\n".getBytes());
out.write("subject:demo r\n".getBytes());
out.write("\r\n".getBytes());
out.write("aaaaaaaaaaaaaaa\r\n".getBytes());
out.write(".\r\n".getBytes());
System.out.println(in.readLine());
五. pop3协议:
telnet pop3.sina.com 110 user aaa pass 1234555 stat //统计有多少封邮件 list 1 //列出第一封邮件的详细信息 retr 1 //从邮件服务器上接受第一封邮件 quit
相关文章推荐
- Eclipse 编辑器消失
- Eclipse快捷键
- 企业应用的权限系统设计
- ActiveMQ Queue结合Spring
- Android & Eclipse FAQ
- javaSE-面向对象-单例设计模式
- eclipse里面找不到database explorer怎么办?
- Spring 3.x jar 包详解 与 依赖关系
- spring security 3.1 配置登陆页面
- 编译hadoop eclipse 2.x插件
- String系列——String关键源码解析
- hadoop-cdh4.1.5-eclipse插件编译(其它CDH版本步骤类似)
- Java cookie和session介绍与区别
- Java byte数组和int互转
- Java命令行运行参数说明大全(偷来的)
- Java监听应用的启动与关闭实例
- java web开发:ajax技术(一)——局部刷新技术的实现
- Java中-classpath和路径的使用
- Eclipse中出现无法找到Maven包
- ARPG手机网游java服务端主程初哥遇到的一些坑总结