javamail开发(一)

本文介绍了邮件系统的两大核心组成部分:SMTP服务器与POP3服务器的工作原理及使用方式,并通过示例展示了如何利用SMTP发送邮件和POP3接收邮件的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

邮件服务器和电子邮件简介:

邮件传输协议和邮件服务器类型:

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



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值