基于SMTP的AVA邮件发送程序.docVIP

  • 8
  • 0
  • 约7.05千字
  • 约 13页
  • 2017-03-05 发布于贵州
  • 举报
?基于SMTP的JAVA邮件发送程序! 新一篇:?如此解释! 正好遇到这方面的问题,写出来,分享一下。 这个程序没有使用JavaMail API,而是根据SMTP协议的要求直接处理协议的细节发送邮件,虽然比较麻烦了一些,但是对了解邮件协议的细节很有帮助的。 本文分两部分,第一部分是SMTP命令介绍(这个从别的地方抄的,嘿嘿);第二部分通过一个实例真正理解一下发送邮件的过程。 一:SMTP 命令简介 什么是 SMTP SMTP Simple Mail Transfer Protocol : 电子邮件从客户机传输到服务器或从某一个服务器传输到另一个服务器使用的传输协议。 SMTP 是请求/响应协议,命令和响应都是基于 ASCII 文本,并以 CR 和 LF 符结束。响应包括一个表示返回状态的三位数字代码。SMTP 在 TCP 协议 25 端口监听连接请求。 什么是 ESMTP ESMTP Extended SMTP ,顾名思义,扩展 SMTP 就是对标准 SMTP 协议进行的扩展。它与 SMTP 服务的区别仅仅是,使用 SMTP 发信不需要验证用户帐户,而用 ESMTP 发信时,服务器会要求用户提供用户名和密码以便验证身份。验证之后的邮件发送过程与 SMTP 方式没有两样。 SMTP 命令包括: HELO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。 EHLO 向服务器标识用户身份。发送者能欺骗,说谎,但一般情况下服务器都能检测到。 MAIL FROM 命令中指定的地址是发件人地址 RCPT TO 标识单个的邮件接收人;可有多个 RCPT TO;常在 MAIL 命令后面。 DATA 在单个或多个 RCPT 命令后,表示所有的邮件接收人已标识,并初始化数据传输,以 CRLF.CRLF 结束 VRFY 用于验证指定的用户/邮箱是否存在;由于安全方面的原因,服务器常禁止此命令 EXPN 验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用 HELP 查询服务器支持什么命令 NOOP 无操作,服务器应响应 OK RSET 重置会话,当前传输被取消 QUIT 结束会话 连接到 Postfix 使用 SMTP 命令发送邮件 例如:安装 Postfix 的邮件服务器IP是 (蓝色字体内容由客户端输入,红色字体内容是服务返回的) telnet 25 以上就是一个邮件发送的基本的命令。 再说一下邮件发送的基本过程: 如果你的邮件地址是a@,而你要用这个邮箱发送一封邮件到to@,你需要连接到服务器上,当然这个连接可能需要认证,现在基本上都要验证,然后是发送邮件到服务器上,关闭连接。在上,你所发送的邮件进入发送队列中,轮到你要发送的邮件时,主机再联系,将邮件传输到服务器上。 ?二:实例应用 MailMessage.java //这个类其实就是一个基本的JavaBean,用于完成一些基本信息的设置,也可以不要这个东西,直接在程序中写明就可以,不过这样条理较清楚一些,而且修改也方便一些. package mail; public class MailMessage private String from; ?private String to; ?private String datafrom; ?private String datato; ?private String subject; ?private String content; ?private String date; ?private String user; ?private String password; ?public String getPassword return password; public void setPassword String password this.password password; public String getUser return user; public void setUser String user this.user user; public String getContent return content; public void setContent String content this.content content; public String getDatafrom return datafrom; public void setDatafrom String datafrom this.datafrom datafrom; public String getDatato return datato; public void setDatato S

文档评论(0)

1亿VIP精品文档

相关文档