1、效果
2、代码
import java.io.*;
import java.net.*;
public class Smtptest {
public static void main(String[] args) {
// TODO Auto-generated method stub
Socket smtpclient=null;
DataOutputStream os=null;
BufferedReader is=null;
String answer=null;
try{
smtpclient=new Socket("smtp.sohu.com",25);
is=new BufferedReader(new InputStreamReader(smtpclient.getInputStream()));
os=new DataOutputStream(smtpclient.getOutputStream());
}
catch(UnknownHostException ue){
System.err.println("未知主机");
}
catch(IOException io){
System.err.println("I/O错误");
}
try{
System.out.println("正在登录邮箱服务器....");
os.writeBytes("EHLO localhost\r\n");
while ((answer=is.readLine())!=null){
System.out.println("Server:"+answer);
if (answer.indexOf("220")!=-1){
break;
}
}
System.out.println("正在检测邮箱支持的服务....");
os.writeBytes("AUTH LOGIN\r\n");
while ((answer=is.readLine())!=null){
if (answer.indexOf("250")==-1){
break;
}
System.out.println("Server:"+answer);
}
System.out.println("正在验证用户名和密码....");
System.out.println("Server:"+answer);
os.writeBytes("bmhzb2Z0\r\n");//用户名的BASE64值
os.writeBytes("********\r\n");//密码的BASE64值,这里用*代替
while ((answer=is.readLine())!=null){
System.out.println("Server:"+answer);
if (answer.indexOf("235")!=-1){
System.out.println("验证成功");
break;
}
else if (answer.indexOf("334")==-1) {
System.out.println("验证失败");
os.close();
is.close();
smtpclient.close();
System.exit(0);
}
}
System.out.println("开始发送邮件....");
os.writeBytes("MAIL From: < nhsoft@sohu.com >\r\n");
os.writeBytes("RCPT To: < nhsoft@sohu.com >\r\n");
os.writeBytes("RCPT To: < nhsoft@126.com >\r\n");
os.writeBytes("DATA\r\n");
while ((answer=is.readLine())!=null){
if (answer.indexOf("354")!=-1){
break;
}
System.out.println("Server:"+answer);
}
System.out.println("Server:"+answer);
System.out.println("正在发送邮件内容....");
os.writeBytes("From: nhsoft@sohu.com\r\n");
os.writeBytes("To: nhsoft@126.com,nhsoft@sohu.com\r\n");
os.writeBytes("Subject: test mail-21\r\n");
os.writeBytes("Content-Type: text/html\r\n");
os.writeBytes("This is a test-21 mail, you don't reply it.\r\n\r\n");
os.writeBytes("\r\n.\r\n");
while ((answer=is.readLine())!=null){
System.out.println("Server:"+answer);
if (answer.indexOf("250")!=-1){
break;
}
}
os.writeBytes("QUIT\r\n");
while ((answer=is.readLine())!=null){
System.out.println("Server:"+answer);
if (answer.indexOf("221")!=-1){
System.out.println("邮件发送成功,退出邮箱!");
break;
}
}
os.close();
is.close();
smtpclient.close();
}
catch(UnknownHostException ue){
System.err.println("无法连接主机");
}
catch(IOException io){
System.err.println("发送I/O错误");
}
}
}
3、执行情况:
正在登录邮箱服务器....
Server:220 smtp.sohu.com ESMTP Postfix
正在检测邮箱支持的服务....
Server:250-smtp.sohu.com
Server:250-PIPELINING
Server:250-SIZE 10240000
Server:250-VRFY
Server:250-ETRN
Server:250-AUTH LOGIN
Server:250-ENHANCEDSTATUSCODES
Server:250-8BITMIME
server:250 DSN
正在验证用户名和密码....
Server:334 VXNlcm5hbWU6
Server:334 UGFzc3dvcmQ6
Server:235 2.0.0 Authentication successful
验证成功
开始发送邮件....
Server:354 Send from Rising mail proxy
正在发送邮件内容....
Server:250
Server:250 2.1.5 Ok
Server:354 End data with <CR><LF>.<CR><LF>
Server:250 2.0.0 Ok: queued as 74169608241
Server:221 2.0.0 Bye
邮件发送成功,退出邮箱!
相关视频
相关阅读 jdk不是有效的win32程序怎么办 jdk不是有效的win32程序解决方法java设置cookie教程 java怎么设置cookiejava怎么设置随机数 java设置随机数详细教程java怎么设置光标位置 java设置光标位置教程如何在Mac上清除Java高速缓存?如何在Mac上卸载Java?Mac上怎么卸载Java?OSX 10.11 java 6不兼容问题解决办法如何为Mac更新Java?java mac版更新教程
热门文章 没有查询到任何记录。
最新文章
myeclipse如何安装插件myeclipse怎么显示代码
myeclipse怎么连接到数据库 myeclipse连接到eclipse没有maven选项怎么办 eclipse没有majava设置cookie教程 java怎么设置cookiejava怎么设置随机数 java设置随机数详细教程
人气排行 java.lang.NullPointerException错误处理方eclipse没有maven选项怎么办 eclipse没有majava环境变量配置方法java中String类主要方法的使用java中创建并初始化字符串方法MyEclipse的注册以及汉化方法图解myeclipse如何安装插件 myeclipse安装插件方一个简单Java发邮件源代码
查看所有0条评论>>