- 1、本文档共13页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
?基于SMTP的JAVA邮件发送程序!
新一篇:?如此解释!
正好遇到这方面的问题,写出来,分享一下。
这个程序没有使用JavaMail API,而是根据SMTP协议的要求直接处理协议的细节发送邮件,虽然比较麻烦了一些,但是对了解邮件协议的细节很有帮助的。
本文分两部分,第一部分是SMTP命令介绍(这个从别的地方抄的,嘿嘿);第二部分通过一个实例真正理解一下发送邮件的过程。
一:SMTP 命令简介
什么是 SMTPSMTP Simple Mail Transfer Protocol : 电子邮件从客户机传输到服务器或从某一个服务器传输到另一个服务器使用的传输协议。 SMTP 是请求/响应协议,命令和响应都是基于 ASCII 文本,并以 CR 和 LF 符结束。响应包括一个表示返回状态的三位数字代码。SMTP 在 TCP 协议 25 端口监听连接请求。
什么是 ESMTPESMTP 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
您可能关注的文档
- 国内临床药学的状及发展.ppt
- 国内女士背包行分析.docx
- 国外软件工程教给我们的一点启示.ppt
- 国网加快推进天智能电网建设.ppt
- 国网优质工程评办法介绍片.ppt
- 哈尔滨各大批发场.doc
- 海洋工程装备制业中长期发展规1.doc
- 汉字四角号码查表.doc
- 行书字帖练习首(30号字体).doc
- 行政人事部201年年度工作总结与规划.ppt
- 2023年教师资格之小学综合素质综合提升训练试卷含答案讲解.docx
- 2022-2023年一级建造师之一建建设工程经济考前冲刺检测卷提供答案解析.docx
- 2022-2023年教师资格之小学综合素质试卷附带答案.docx
- 2022-2023年一级建造师之一建建设工程经济考前冲刺练习题库含答案讲解.docx
- 2023年教师资格之小学综合素质通关练习题包含答案.docx
- 2022-2023年教师资格之小学综合素质训练试卷含答案讲解.docx
- 2022-2023年教师资格之小学综合素质检测卷和答案.docx
- 2022-2023年一级建造师之一建建设工程经济考前冲刺模拟卷.docx
- 2022-2023年一级建造师之一建建设工程经济考前冲刺试卷包含答案.docx
- 2022-2023年一级建造师之一建建设工程经济练习试题附带答案.docx
文档评论(0)