一、基本概念
SMTP(simple mail transfer protocl简单邮件传输协议),定义了邮件客户端软件与smtp服务器之间,以及两来smtp服务器之间的通信规则。
POP的全称是 Post Office Protocol,即邮局协议,用于电子邮件的接收。是TCP/IP协议族中的一员,由RFC 1939 定义。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。
新浪的邮件服务:smtp.sian.com 端口:25
使用telnet命令连接服务器
二、命令行邮件发送实例(新浪邮箱和网易邮箱)
1、准备一个程序用来进行BASE64Encoder的转换
package util;
import java.io.UnsupportedEncodingException;
import java.util.Scanner;
import sun.misc.BASE64Decoder;
import sun.misc.BASE64Encoder;
public class mainBase64 {
// 加密
public static String getBase64(String str) {
byte[] b = null;
String s = null;
try {
b = str.getBytes("utf-8");
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
if (b != null) {
s = new BASE64Encoder().encode(b);
}
return s;
}
public static void main(String[] args){
System.out.println("请输入编码前的字符串:");
Scanner scanner= new Scanner(System.in);
String string=scanner.next();
String string0=getBase64(string);
System.out.println("编码后:"+string0);
}
}
由于使用命令行发送邮件时候,用户的用户名和密码必须是经过base64加密之后的字符串,所以在发送邮件之前,必须将自己注册的邮箱的用户名和密码加密;
2、得到加密之后的用户名和密码后,就可以使用命令行发送邮件,
下面演示一个完整的发送邮件过程;按照红色命令即可实现简单邮件的发送;
2.1、打开DOS命令行,使用telnet命令:telnet smtp.sina.com 25
这个是新浪的邮件服务器 ;25是端口;
注:如果telnet提示不是内部或者外部命令,一定是你的telnet.exe没有安装,你可以在
控制面板中,打开关闭的telnet服务器和客户端即可;
2.2、新浪的服务器连接上后,必须向服务器打招呼,即发送 命令EHLO [ ] ;
在这里便是:ehlo yourhostname
注:junxiuxiao是我的新浪的账号;这里没有使用base64的加密;
2.3、打过招呼之后,便开始输入用户名和密码:
在服务器的第一个提示下(虽然看不懂),输入加密后的账号:anVueGl1eGlhbw
在服务器的第二个提示下(虽然看不懂),输入加密后的密码:XXXXXX
在身份验证成功后,会有提示:OK Authenticated 表示登录成功
2.4、然后,设置发件人和收件人地址;
直接输入 :mail from! <junxiuxiao@sina.com>
ok之后,在输入 :rcpt to: <junxiuxiao@163.com>
紧接着输入:data
下一步,输入发件人名称,输入 from! <junxiuxiao@sina.com>
输入标题: subject! nihao
换行后输入!!!!!
然后:test!!!!!
最后:.
2.5、到此为止,邮件已经发送成功,你可以登录邮箱查看!我的如下:
本人,测试了qq邮件的发送,如果你发送不成功,可能由于qq的邮件服务没有打开,如果没有开的话,也不成问题,qq会检测到你尝试使用smtp发送邮件,然后qq会给你发一个邮件提醒,告诉你如何打开smtp服务;
可是,qq邮箱的发件人有些,不满意:感兴趣的同志,自己测试,不是研究的重点!
转载于:https://blog.51cto.com/seasky09/1208492