`
lclcr
  • 浏览: 125472 次
  • 性别: Icon_minigender_1
  • 来自: 山东
社区版块
存档分类
最新评论

JavaMail(一)

    博客分类:
  • JAVA
 
阅读更多
浅谈邮件传输协议
       SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把Email寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。      
        简单邮件传输协议(SMTP)是一种基于文本的电子邮件传输协议,是在因特网中用于在邮件服务器之间交换邮件的协议。SMTP是应用层的服务,可以适应于各种网络系统。
        SMTP的命令和响应都是基于文本,以命令行为单位,换行符为CR/LF。响应信息一般只有一行,由一个3位数的代码开始,后面可附上很简短的文字说明。
        SMTP要经过建立连接、传送邮件和释放连接3个阶段。具体为:
        (1)建立TCP连接。
        (2)客户端向服务器发送HELO命令以标识发件人自己的身份,然后客户端发送MAIL命令。
        (3)服务器端以OK作为响应,表示准备接收。
        (4)客户端发送RCPT命令。
        (5)服务器端表示是否愿意为收件人接收邮件。
        (6)协商结束,发送邮件,用命令DATA发送输入内容。
        (7)结束此次发送,用QUIT命令退出。     
        客户端邮件首先到达数据发送服务器,再由发送服务器负责发送到接收方的服务器。在发送邮件前,发送服务器会与接收方服务器联系,已确认接收方服务器是否已准备好接受邮件。如果已经准备好,则传送邮件;如果没有准备好,发送服务器便会等待,并在一段时间后继续与接收方服务器进行联系,若在规定的时间内联系不上,发送服务器会发送一个消息到客户的邮箱说明情况。
        SMTP服务器基于DNS中的邮件交换(MX)记录路由电子邮件。电子邮件系统发邮件时是根据收信人的地址后缀来定位邮件服务器的。SMTP通过用户代理程序(UA)完成邮件的编辑、收取和阅读等功能;通过邮件传输代理程序(MTA)将邮件传送到目的地。
        POP(Post Office Protocol)即邮局协议,POP协议允许工作站动态访问服务器上的邮件,目前已发展到第三版,称为 POP3。
        POP协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,用户通过自己所熟悉的邮件客户端软件,例如Foxmail、Outlook Express和the Bat等,经过相应的参数设置(主要是设置POP3邮件服务器的IP地址或者域名、用户名和口令)后,可以连接到邮件服务器并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人机器上,邮件服务器上的邮件被删除
        POP3 并不支持对服务器上邮件进行扩展操作,此过程由更高级的IMAP4完成。POP3使用TCP作为传输协议。
        IMAP(Internet Message Access Protocol)即Internet消息访问协议,运行在TCP/IP协议之上,使用的端口是143,是一种功能比POP3更强大的新的接收邮件协议。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客户端直接对服务器上的邮件进行操作。常用的版本是IMAP4。
        邮件客户程序的主要任务是向邮件服务器发送邮件,以及接收来自邮件服务器的邮件。如果用java语言从头编写邮件客户程序,就必须通过java套接字(socket)与邮件服务器通信,发送和接收符合IMAP、POP3或SMTP协议的请求和响应信息。

        如果使用命令行发邮件的话,用户名和密码是需要Base64编码的,下面的类提供了对用户名和密码编码的功能:
public class JmailClient {
	public static void main(String[] args)throws Exception {
		BASE64Encoder encoder = new BASE64Encoder();
		System.out.println("请输入用户名:");
		String name = new BufferedReader(new InputStreamReader(System.in)).readLine();
		System.out.println(encoder.encode(name.getBytes()));
		System.out.println("请输入密码:");
		String password = new BufferedReader(new InputStreamReader(System.in)).readLine();
		System.out.println(encoder.encode(password.getBytes()));
	}
}

HELO : 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。 
EHLO : 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。 
MAIL FROM : 命令中指定的地址是发件人地址
RCPT TO : 标识单个的邮件接收人;可有多个RCPT TO;常在 MAIL 命令后面。
DATA : 在单个或多个RCPT命令后,表示所有的邮件接收人已标识,并初始化数据传输,以 CRLF.CRLF结束(回车点回车)
VRFY : 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令 
EXPN : 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用 
HELP : 查询服务器支持什么命令 
NOOP : 无操作,服务器应响应 OK 
RSET : 重置会话,当前传输被取消
QUIT : 结束会话

       Telnet协议是TCP/IP协议族中的一员,位于OSI模型的第7层---应用层上的一种协议。它是Internet远程登陆服务的标准协议和主要方式,是一个通过创建虚拟终端提供连接到远程主机终端仿真的TCP/IP协议。这一协议需要通过用户名和口令进行认证,是Internet远程登陆服务的标准协议。
        它为用户提供了在本地计算机上完成远程主机工作的能力。在终端使用者的电脑上使用telnet程序,用它连接到服务器。终端使用者可以在telnet程序中输入命令,这些命令会在服务器上运行,就像直接在服务器的控制台上输入一样,从而可以在本地就能控制服务器。Telnet是常用的远程控制Web服务器的方法。
telnet [-a][-e escape char][-f log file][-l user][-t term][host [port]]
-a      企图自动登录。除了用当前已登陆的用户名以外,与-l选项相同。
-e      跳过字符来进入 telnet 客户提示。
-f      客户端登录的文件名
-l      指定远程系统上登录用的用户名称。
        要求远程系统支持 TELNET ENVIRON 选项。
-t      指定终端类型。
        支持的终端类型仅是: vt100, vt52, ansi 和 vtnt。
host    指定要连接的远程计算机的主机名或IP地址。
port    指定端口号或服务名。

         举例1.
         首先通过命令行:telnet mail.ydon.com 25

在发送数据时,输入data命令后,可以使用的Email关键字:

<<To Be Continued>>
  • 大小: 30.6 KB
  • 大小: 30 KB
  • 大小: 50.4 KB
分享到:
评论

相关推荐

    javamail(带界面的javamail)

    JavaMail 是一个强大的开源库,用于在Java应用程序中实现电子邮件的发送和接收功能。它提供了丰富的API,使得开发者能够方便地处理SMTP、POP3、IMAP等邮件协议,支持多种邮件格式,包括文本、HTML以及带有附件的邮件...

    javamail 视频源码 第一部分

    JavaMail 是一个开源的 Java API,它允许程序员通过 SMTP、POP3 或 IMAP 协议发送、接收和处理电子邮件。这个“javamail 视频源码 第一部分”很可能是张孝祥老师的一个教程系列,旨在帮助开发者深入理解如何使用 ...

    JavaMail+JAF+JavaMail_API+JavaMail_API详解

    JavaMail 是一个开源的Java库,它为Java程序员提供了处理电子邮件的能力。这个库不仅支持SMTP、POP3和IMAP协议,还支持其他的邮件系统协议,如NNTP和EWS。JavaMail API是JavaMail库的核心部分,它提供了一系列的接口...

    javamail的jar包:javamail-1.6

    JavaMail 是一个开源库,用于在Java应用程序中处理电子邮件。这个库提供了丰富的API,使得开发者可以方便地执行发送、接收、读取和管理邮件的任务。`javamail-1.6`是JavaMail的一个版本,它包含了从早期版本中继承的...

    javamail.jar,javamail资源包

    JavaMail 是一个开源的 Java API,它为Java开发者提供了处理电子邮件的能力。这个API允许开发者发送、接收、管理邮件,包括附件、HTML 内容、MIME 多部分消息等。`javamail.jar` 文件是JavaMail的核心库,包含了所有...

    JavaMail-1.5 API

    JavaMail API是Java平台上用于发送和接收电子邮件的一个标准扩展库。它并不是Java标准库的一部分,而是Java企业版(J2EE)中的一部分。JavaMail提供了一系列用于处理电子邮件的类和接口,允许开发者在Java应用程序中...

    javamail 所有jar包

    JavaMail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的功能。这个API包括了多种协议的支持,如SMTP(简单邮件传输协议)、POP3(邮局协议)和IMAP(因特网消息访问协议)。在...

    JavaMail 1.6.0 Final Release

    JavaMail 是一个开源的 Java API,它为开发者提供了在 Java 应用程序中发送和接收电子邮件的能力。这个“JavaMail 1.6.0 Final Release”是 JavaMail 的一个重要版本,它包含了对 SMTP(简单邮件传输协议)、IMAP...

    javaMail API 跟 javaMail.jar包

    JavaMail API是Java EE的一部分,但也可以在Java SE环境中使用。`javaMail.jar`是JavaMail API的实现库,包含了实现邮件协议(如SMTP、POP3、IMAP)的类和方法。 JavaMail API的核心概念包括以下几个部分: 1. **...

    JavaMail相关jar包

    1. **JavaMail API**:这是JavaMail的核心部分,提供了一组接口和类,使得开发者能够与邮件服务器进行交互,包括发送、接收邮件,以及处理附件、MIME类型等内容。 2. **Java Activation Framework (JAF)**:也称为...

    JavaMail相关Jar包

    JavaMail 是一个开源的Java库,它为Java程序员提供了发送、接收和操作电子邮件的强大功能。在Java应用程序中发送电子邮件,通常需要依赖特定的库,JavaMail 就是其中之一。本主题将详细介绍JavaMail以及与之相关的`...

    使用JAVAMail代发邮件

    JavaMail 是一个 Java API,用于在 Java 应用程序中发送和接收电子邮件。它提供了一个抽象层,允许开发者使用不同的电子邮件协议,例如 SMTP、POP3 和 IMAP。 在本文中,我们将讨论如何使用 JavaMail 库来代发邮件...

    javaMail代码

    JavaMail 是一个开源的 Java API,它允许 Java 程序员通过 SMTP、POP3、IMAP 协议发送、接收和管理电子邮件。这个技术在企业级应用开发中非常常见,尤其是在构建自动化通知系统或者集成邮件服务时。下面将详细阐述 ...

    JavaMail 具备垃圾邮件过滤功能的邮箱

    JavaMail 是一个强大的Java库,它允许开发人员在Java应用程序中实现邮件的发送、接收以及管理功能。这个项目不仅提供了SMTP、POP3和IMAP协议的支持,还包含了丰富的API,可以方便地处理邮件的MIME编码、附件、HTML...

    JavaMail 1.5.2

    JavaMail 是一个开源的 Java API,它为 Java 开发者提供了处理电子邮件的接口和类库。这个API使得在Java应用程序中发送和接收邮件变得简单。JavaMail 1.5.2 版本是该库的一个特定发行版,可能包含了一些性能优化、新...

    JavaMail完整JAR包

    JavaMail 是一个强大的开源库,专门用于在Java应用程序中处理电子邮件。这个完整JAR包包含了所有必要的组件,使得开发者能够方便地实现发送、接收、读取以及管理电子邮件。以下是JavaMail的一些关键知识点: 1. **...

    javamail使用demo示例

    JavaMail 是一个开源库,它为Java程序员提供了一组API,用于处理电子邮件的发送和接收。这个"javamail使用demo示例"是JavaMail官方提供的一个实例集合,旨在帮助开发者更好地理解和应用JavaMail库。下面我们将深入...

    JavaMail邮件发送源码 非常简单

    JavaMail是一种在Java应用程序中发送和接收电子邮件的标准API,它为开发者提供了强大的功能,使得处理邮件变得简单而高效。在JavaMail中,我们主要利用 javax.mail 和 javax.mail.internet 这两个包中的类来实现邮件...

    javamail API帮助文档

    1. **Message类**:Message是JavaMail的核心类,代表一封邮件。它包含了邮件的所有属性,如主题、发送者、接收者、正文以及附件。你可以通过`Message.writeTo(OutputStream)`方法将邮件写入输出流,或者使用`Message...

    JavaMail API详解.txt

    JavaMail API是用于处理电子邮件的一组标准接口,它为开发人员提供了强大的邮件收发能力。JavaMail API不仅支持常见的邮件协议如SMTP(简单邮件传输协议)、POP3(邮局协议版本3)以及IMAP4(Internet消息访问协议...

Global site tag (gtag.js) - Google Analytics