今天有一个作业,是要用java通过socket,通过smtp协议向邮箱服务器发送请求, 然后邮箱服务器发送邮件。这里记录一下
总体步骤
- 通过socket连接到邮箱服务器
- 输入相关信息以登录
- 发送请求,服务器执行对应请求
申请邮箱授权码
如果需要使用 smtp,需要到相关的邮箱,获取授权码,这里以qq邮箱为例,在设置里面找到smtp服务,然后申请成功之后会给你一个授权码
登录服务器
邮件服务器发送步骤:
- 连接到服务器
- 问好
- 申请登录
- 指定邮件发送者
- 指定邮件发送目标
- 输入邮件内容
- 以
\r\r.\r\n
结束邮件内容 并且发送邮件 其实就是回车 点 回车
在使用socket连接到服务器之后,需要问好(我不知道为啥要这么做,可能是为了打开输入输出流)
向服务器发送以下信息以问好
HELO a
然后登录邮件服务器,输入auth login
以登录,之后的两行,输入
邮箱号的 Base64 加密后的字符串
邮箱申请码 Base64 加密后的字符串
输入DATA
服务器会认为接下来你要输入正文内容了
DATA
正文
...
以 \r\n.\r\n 结束 (回车 点 回车)
输入QUIT
断开连接
代码
import java.io.*;
import java.net.*;
import java.util.*;