SMTP命令
HELO | 向服务器标识用户身份 |
EHLO | 向服务器标识用户身份 |
MAIL FROM | 发件人地址 |
RCPT TO | 标识单个的邮件接收人 |
DATA | 表示所有的邮件接收人已标识,并初始化数据传输 |
HELP | 查询服务器支持什么命令 |
NOOP | 要求接收SMTP仅做OK应答 |
VRFY | 验证指定的邮箱是否存在,由于安全因素,服务器多禁止此命令 |
EXPN | 验证给定的邮箱列表是否存在,扩充邮箱列表,也常禁止使用 |
REST | 退出/复位当前的邮件传输 |
QUIT | 要求接收SMTP返回一个OK应答并关闭传输 |
SMTP案例
package com.levelcoder;
import java.util.Properties;
import javax.mail.Address;
import javax.mail.Message;
import javax.mail.MessagingException;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
public class Demo1 {
public static void main(String[] args) throws MessagingException {
Properties props = new Properties();
props.setProperty("mail.smtp.auth", "true");//发送邮件是否需要认证 true 需要认证 false 不需要认证
props.setProperty("mail.transport.protocol", "smtp");//配置邮件协议
Session session = Session.getInstance(props);
session.setDebug(true);//是否开启 调试信息 true 开启 false 不开启 开启的时候 会把和smtp交互过程打印出来
Message message = new MimeMessage(session) ;
message.setFrom(new InternetAddress("发件人邮箱"));//设置发件人
message.setSubject("测试文本");//设置邮件标题
message.setText("测试文本");//设置发件文本信息
Transport transport = session.getTransport();
transport.connect("smtp服务器", 25,"用户名","密码");//String host, int port, String user,String password
transport.sendMessage(message,new Address[]{new InternetAddress("收件人地址")});
transport.close();
}
}
执行结果分析
DEBUG: setDebug: JavaMail version 1.4.4 //标记当前JavaMail版本
DEBUG: getProvider() returning javax.mail.Provider[TRANSPORT,smtp,com.sun.mail.smtp.SMTPTransport,Sun Microsystems, Inc]
DEBUG SMTP: useEhlo true, useAuth true
DEBUG SMTP: trying to connect to host "smtp.126.com", port 25, isSSL false
220 126.com Anti-spam GT for Coremail System (126com[20140526])
DEBUG SMTP: connected to host "smtp.126.com", port: 25
EHLO N12KCKCM2UO42M8 //向服务器标识用户身份
250-mail
250-PIPELINING
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-coremail 1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UFG1q1wUCa0xDrUUUUj
250-STARTTLS
250 8BITMIME
DEBUG SMTP: Found extension "PIPELINING", arg ""
DEBUG SMTP: Found extension "AUTH", arg "LOGIN PLAIN"
DEBUG SMTP: Found extension "AUTH=LOGIN", arg "PLAIN"
DEBUG SMTP: Found extension "coremail", arg "1Uxr2xKj7kG0xkI17xGrU7I0s8FY2U3Uj8Cz28x1UUUUU7Ic2I0Y2UFG1q1wUCa0xDrUUUUj"
DEBUG SMTP: Found extension "STARTTLS", arg ""
DEBUG SMTP: Found extension "8BITMIME", arg ""
DEBUG SMTP: Attempt to authenticate
DEBUG SMTP: check mechanisms: LOGIN PLAIN DIGEST-MD5 NTLM
AUTH LOGIN //认证模式
334 dXNlcm5hbWU6
SmF2YVpoYW5nWW9uZ0AxMjYuY29t //base64格式编码:用户名
334 UGFzc3dvcmQ6
enkxOTkyMTIwNS4= //base64格式编码:密码
235 Authentication successful
DEBUG SMTP: use8bit false
MAIL FROM:<JavaZhangYong@126.com> //发件人
250 Mail OK
RCPT TO:<LevelCoder@126.com> //收件人
250 Mail OK
DEBUG SMTP: Verified Addresses
DEBUG SMTP: LevelCoder@126.com
DATA
354 End data with <CR><LF>.<CR><LF> //.标记当前邮件结束
From: JavaZhangYong@126.com
Message-ID: <772777427.0.1496972256323.JavaMail.Administrator@N12KCKCM2UO42M8>
Subject: =?UTF-8?B?5rWL6K+V5paH5pys?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8 //发送邮件类型
Content-Transfer-Encoding: base64 //发送邮件编码格式
5rWL6K+V5paH5pys //发送邮件正文
.
250 Mail OK queued as smtp1,C8mowACnPCXg+zlZqM5gAA--.23809S2 1496972258
QUIT //退出
221 Bye
结果
POP3命令
命令 | 描述 |
USER [username] | 处理用户名 |
PASS [password] | 处理用户密码 |
APOP [Name,Digest] | 认可Digest是MD5消息摘要 |
STAT | 处理请求服务器发回关于邮箱的统计资料,如邮件总数和总字节数 |
UIDL [Msg#] | 处理返回邮件的唯一标识符,POP3会话的每个标识符都将是唯一的 |
LIST [Msg#] | 处理返回邮件数量和每个邮件的大小 |
RETR [Msg#] | 处理返回由参数标识的邮件的全部文本 |
DELE [Msg#] | 处理服务器将由参数标识的邮件标记为删除,由quit命令执行 |
RSET | 处理服务器将重置所有标记为删除的邮件,用于撤消DELE命令 |
TOP [Msg# n] | 处理服务器将返回由参数标识的邮件前n行内容,n必须是正整数 |
NOOP | 处理服务器返回一个肯定的响应 |
QUIT | 终止会话 |