SMTP的连接和收发过程:
a.建立TCP连接。
b.客户端发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令服务器端正希望以OK作为响应,表明准备接收。
c.客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行
d.协商结束,发送邮件,用命令DATA发送
e.以.表示结束输入内容一起发送出去
f.结束此次发送,用QUIT命令退出。
SMTP的基本命令集:
HELO 向服务器标识用户身份
MAIL 初始化邮件传输mail from: <xxx>
RCPT 标识单个的邮件接收人;常在MAIL命令后面可有多个rcpt to: <xxx>
DATA 在单个或多个RCPT命令后,表示所有的邮件接收人已标识,初始化数据传输,以.结束。
NOOP 无操作,服务器应响应OK
RSET 重置会话,当前传输被取消
QUIT 结束会话
POP3简介:
在POP3协议中有三种状态,认可状态,处理状态,和更新状态。当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态,在完成相应的操作后客户机发出quit命令,则进入更新状态,更新之后最后重返认可状态。
POP3基本命令集:
USER username
PASS password
STAT 请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数
LIST 返回邮件数量和每个邮件的大小
RETR [Msg#] 返回由参数标识的邮件的全部文本
DELE [Msg#] 服务器将由参数标识的邮件标记为删除,由quit命令执行
RSET 服务器将重置所有标记为删除的邮件,用于撤消DELE命令
NOOP 服务器返回一个肯定的响应
QUIT 更新
class POP3Demo {
private static String POP3Server = "pop.126.com";
private static String USERNAME = "username";//实际应用中改成真实的用户名
private static String PASSWORD = "password";//实际应用中改成真实的密码
public static void main(String[] args) {
int POP3Port = 110;
Socket client = null;
try {
// 向POP3服务程序建立一个套接字连接。
client = new Socket(POP3Demo.POP3Server, POP3Port);
// 创建一个BufferedReader对象,以便从套接字读取输出。
InputStream is = client.getInputStream();
BufferedReader sockin = new BufferedReader(new InputStreamReader(is));
// 创建一个PrintWriter对象,以便向套接字写入内容。
OutputStream os = client.getOutputStream();
PrintWriter sockout = new PrintWriter(os, true);
// 显示同SMTP服务程序的握手过程。
System.out.println("S:" + sockin.readLine());
sockout.println("user " + POP3Demo.USERNAME);
System.out.println("S:" + sockin.readLine());
sockout.println("pass " + POP3Demo.PASSWORD);
System.out.println("S:" + sockin.readLine());
sockout.println("stat");
String temp[] = sockin.readLine().split(" ");
int count = Integer.parseInt(temp[1]);//得到信箱中共有多少封邮件
for (int i = 1; i < count + 1; i++) {//依次打印出邮件的内容
sockout.println("retr " + i);
System.out.println("以下为第" + i + "封邮件的内容");
while (true) {
String reply = sockin.readLine();
System.out.println(reply);
if (reply.toLowerCase().equals(".")) {
break;
}
}
} </xxx></xxx>
} catch (IOException e) {
System.out.println(e.toString());
} finally {
try {
if (client != null) {
client.close();
}
} catch (IOException e) {}
}
}
}
class SMTPDemo {
//以下三项请在使用时改成真实的信箱地址
//并且注意,SMTPServer和receiver必须是同一个服务器
private static String sender = "sender";
private static String receiver = "receiver";
private static String SMTPServer = "smtpserver";
public static void main(String[] args) {
int SMTPPort = 25;
Socket client = null;
try {
// 向SMTP服务程序建立一个套接字连接。
client = new Socket(SMTPDemo.SMTPServer, SMTPPort);
// 创建一个BufferedReader对象,以便从套接字读取输出。
InputStream is = client.getInputStream();
BufferedReader sockin = new BufferedReader(new InputStreamReader(is));
// 创建一个PrintWriter对象,以便向套接字写入内容。
OutputStream os = client.getOutputStream();
PrintWriter sockout = new PrintWriter(os, true);
// 显示同SMTP服务程序的握手过程。
System.out.println("S:" + sockin.readLine());
sockout.println("helo");
System.out.println("S:" + sockin.readLine());
sockout.println("mail from: " + "<" + SMTPDemo.sender + ">");
System.out.println("S:" + sockin.readLine());
sockout.println("rcpt to: " + "<" + SMTPDemo.receiver + ">");
System.out.println("S:" + sockin.readLine());
sockout.println("data");
//发送邮件标题
sockout.println("subject: 你好");
//发送邮件内容
sockout.println("ni hao");
sockout.println("wo shi li jian");
//此处的.为特殊标记,表示邮件结束
sockout.println(".");
sockout.println("rset");
sockout.println("quit");
} catch (IOException e) {
System.out.println(e.toString());
} finally {
try {
if (client != null) {
client.close();
}
} catch (IOException e) {}
}
}
}
分享到:
相关推荐
该课程设计主要任务是实现收发无附件的邮件。在上机前应认真做好各种准备工作,熟悉每个题目涉及的网络相关知识,熟悉机器的操作系统、语言的集成环境和设计工具。在实验过程中,通过一个实际网络协议或网络应用系统...
综合使用了Socket和JavaMail实现了邮件的收发并支持SMTP,POp3协议,带有web界面,实现了邮件的收发删除查看上传下载附件。并带有搜索邮件等功能
在制作收发邮件的.NET程序时,一般使用JAMIL等第三方组件,但对于需要SSL安全验证的邮箱就有些麻烦了,其实有两种办法,SOCKET和POP3扩展协议,这里上传了一个Pop3mimeclient类实现的收发SSL类邮箱的小程序,该类是...
Foxmail Server 提供多种邮件服务,包括SMTP、POP3、LDAP,内建邮件扩充协议的MIME,用户可以根据使用习惯以Outlook Express、Foxmail等流行客户端软件收发邮件,也可以在美观亲切易用的全中文WEB浏览器界面上登陆...
基于socket i/o 选择模式用pop3管理油箱,smtp发邮件,支持附件,提供原代码同大家分享,实现语言C语言,开发环境:vc6.0,所以想看懂代码要有点水平,呵呵,
Foxmail Server 提供多种邮件服务,包括SMTP、POP3、LDAP,内建邮件扩充协议的MIME,用户可以根据使用习惯以Outlook Express、Foxmail等流行客户端软件收发邮件,也可以在美观亲切易用的全中文WEB浏览器界面上登陆...
使用smtp协议发送简单邮件; 发送带附件的邮件; 给多人发送邮件; 使用pop3接收邮件; 19jsp与servlet 获取客户端的真实ip地址; jsp无刷新聊天室; 设置和读取cookie; 上传文件; 用servlet生成图形验证码; 用servlet...
第8章 电子邮件收发模块 8.1 概述 180 8.2 关键技术 180 8.2.1 Base64编码格式 180 8.2.2 SMTP服务 181 8.2.3 POP3协议 184 8.2.4 使用Jmail组件接收邮件 186 8.2.5 邮件发送类...
第8章 电子邮件收发模块 8.1 概述 8.2 关键技术 8.2.1 Base64编码格式 8.2.2 SMTP服务 8.2.3 POP3协议 8.2.4 使用Jmail组件接收邮件 8.2.5 邮件发送类的使用 8.2.6 使用正则表达式验证邮件格式 8.3 设计过程 8.3.1 ...
第8章 电子邮件收发模块 8.1 概述 8.2 关键技术 8.2.1 Base64编码格式 8.2.2 SMTP服务 8.2.3 POP3协议 8.2.4 使用Jmail组件接收邮件 8.2.5 邮件发送类的使用 8.2.6 使用正则表达式验证邮件格式 8.3 设计过程 8.3.1 ...
第8章 电子邮件收发模块 8.1 概述 8.2 关键技术 8.2.1 Base64编码格式 8.2.2 SMTP服务 8.2.3 POP3协议 8.2.4 使用Jmail组件接收邮件 8.2.5 邮件发送类的使用 8.2.6 使用正则表达式验证邮件格式 8.3 设计过程 8.3.1 ...
第8章 电子邮件收发模块 8.1 概述 180 8.2 关键技术 180 8.2.1 Base64编码格式 180 8.2.2 SMTP服务 181 8.2.3 POP3协议 184 8.2.4 使用Jmail组件接收邮件 186 8.2.5 邮件发送类的使用 188 8.2.6 ...