SMTP协议

SMTP(Simple MailTransfer Protocol)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,是定义邮件传输最常用的协议,由RFC821所定义.它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。http://baike.baidu.com/view/5450.htm

 

基本命令集

命令

命令用途

HELO

向服务器标识用户身份发送者能欺骗、说谎,

但一般情况下服务器都能检测到

MAIL

初始化邮件传输,以mail from:开始

RCPT

标识单个的邮件接收人;常在MAIL命令后面,可有多个rcpt to:

DATA

在单个或多个RCPT命令后,表示所有的邮件接收人已标识,

并初始化数据传输,以.结束

VRFY

用于验证指定的用户/邮箱是否存在;

由于安全方面的原因,服务器常禁止此命令

EXPN

验证给定的邮箱列表是否存在,扩充邮箱列表,也常被禁用

HELP

查询服务器支持什么命令

NOOP

无操作,服务器应响应OK

QUIT

结束会话

RSET

重置会话,当前传输被取消

 

命令返回值列表

 

返回值代码

返回值含义

错误返回值

500

 邮箱地址错误

501

 参数格式错误

502

 命令不可实现

503

 服务器需要SMTP验证

504

 命令参数不可实现

421

 服务未就绪,关闭传输信道

450

 要求的邮件操作未完成,邮箱不可用(例如,邮箱忙)

550

 要求的邮件操作未完成,邮箱不可用(例如,邮箱未找到或不可访问)

451

 放弃要求的操作;处理过程中出错

551

 用户非本地,请尝试<forward-path>

452

 系统存储不足,要求的操作未执行

552

 过量的存储分配,要求的操作未执行

553

 邮箱名不可用,要求的操作未执行(例如邮箱格式错误)

432

 需要一个密码转换

534

 认证机制过于简单

538

 当前请求的认证机制需要加密

454

 临时认证失败

530

 需要认证

正确返回值

220

 服务就绪

250

 要求的邮件操作完成

251

 用户非本地,将转发向<forward-path>

354

 开始邮件输入,以<CRLF>.<CRLF>结束

221

 服务关闭传输信道

334

 服务器响应验证Base64字符串

235

 验证成功

         

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
该压缩包包含三个文档,分别是SMTP协议详解,POP3协议详解,MIME规范详解,文档中详细介绍了一个邮件发送和接收的过程分析,协议本身的包含的命令和工作过程,为开发邮件代理的客户端提供技术基础。如下是部分SMTP协议部分内容: 1.1 SMTP邮件通信中的位置 SMTP,即简单邮件传送协议,所对应RFC文档为RFC821。同http等多数应用层协议一样,它工作在C/S模式下,用来实现因特网上的邮件传送。SMTP在整个电子邮件通信中所处的位置。可以看出,SMTP是用来将客户机上的邮件传送到服务器上。这里的客户机是指某次连接中的发送方,服务器是指相应的接收方。在讲解发送邮件的整个通信过程前,先解释一下面几个术语。 1.2几个术语 1.2.1.邮件 邮件是一种消息的格式,由信封、首部和正文组成。 信封上最重要的是收信人的地址。邮件服务器用这个地址将邮件发送到收信人所在的邮件服务器上。 首部是由用户代理或邮件服务器添加的一些信息。包括Received、Message-ID、From、Data、Reply-To、X-Phone、X-Mailer、To和Subject等字段。 正文是是发送用户发给接收用户报文的内容。RFC 822 规定正文为NVT ASCII文字行。 更为详细的说明,请参考RFC821和RFC822等协议。 1.2.2.用户代理 用户代理UA(User Agent)是用户与电子邮件系统的交互接口,一般来说它就是我们PC机上的一个程序。Windows上常见的用户代理是Foxmail和Outlook Express。 用户代理提供一个好的用户界面,它提取用户在其界面填写的各项信息,生成一封符合SMTP邮件标准的邮件,然后采用SMTP协议邮件发送到发送端邮件服务器
好的,使用SMTP协议实现校验邮箱客户端账号密码是否正确,可以使用JavaMail API提供的SMTP协议进行验证。具体实现如下: ``` import javax.mail.*; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeMessage; import java.util.Properties; public class EmailAuthentication { public static boolean validateCredentials(String email, String password, String host) { Properties properties = new Properties(); properties.put("mail.smtp.host", host); properties.put("mail.smtp.port", "587"); properties.put("mail.smtp.auth", "true"); properties.put("mail.smtp.starttls.enable", "true"); Session session = Session.getInstance(properties, new Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication(email, password); } }); try { Transport transport = session.getTransport("smtp"); transport.connect(); transport.close(); System.out.println("Authentication successful."); return true; } catch (MessagingException e) { System.out.println("Authentication failed: " + e.getMessage()); return false; } } public static void main(String[] args) { String email = "[email protected]"; String password = "your_password"; String host = "smtp.example.com"; validateCredentials(email, password, host); } } ``` 在主函数中,分别定义了要验证的邮箱账号、密码和SMTP服务器地址。调用`validateCredentials()`方法传入这些参数即可进行验证。该方法内部使用JavaMail API提供的`Session`和`Transport`类进行连接和验证。如果验证成功,将会打印`Authentication successful.`,否则将会打印`Authentication failed: `和错误信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值