telnet与java socket发送简单文本文件

telnet发邮件
telnet smtp.163.com 25 //连接邮箱服务器
EHLO test //打招呼 ehlo后面内容随便
AUTH LOGIN //进行认证
MTIwMDAzODA4212 //base64编码后的用户名(不包括 @qq.com)
MTM5Nzk1ODQ4MzM21= //base64编码后的密码
MAIL FROM:<120003808@163.com> //邮件发送者
RCPT TO:<120003808@163.com> //邮件接收者
DATA //发送正文
From: 120003808@163.com //邮件头 邮件显示时发送人的邮箱 可以不按真实的输入
To: 120003808@163.com //邮件头 邮件显示时接收人 可以不按真实的输入
Date: Mon, 25 Oct 2004 14:24:27 +0800
Subject: 发送测试 //邮件主题
Content-Type:text/html //内容类型
Content-Transfer-Encoding:utf-8 //编码方式
MIME-Version: 1.0 //MIME版本
//回车换行 表示邮件头结束
这是一个发送html格式邮件测试 <a href="http://www.sina.com.cn">新浪</a>
. //"."表示邮件结束标志
QUIT //断开连接

socket发送简单文本邮件
public class MailSend {
private static String smtpServer = "smtp.163.com"; //邮箱服务器
private int port = 25; //邮箱服务器端口
private static String email = "120003808@163.com";
public static void main(String[] args) {
String from = email;
String to = email;
new MailSend().sendMail(from,to);
}

private void sendMail(String from,String to) {
Socket socket = null;
try {
socket = new Socket(smtpServer,port);//连接到邮箱服务器
BufferedReader br = getReader(socket);//得到输入流
PrintWriter pw = getPrintWriter(socket);//得到输出流

sendAndReceiver(null,br,pw);//仅仅为查看接收服务端响应数据
sendAndReceiver("ehlo "+"test",br,pw);//打招呼,后面接任意字符
sendAndReceiver("auth login",br,pw);//用户认证
String username = new BASE64Encoder().encode("120003808".getBytes());//base64编码用户名
String password = new BASE64Encoder().encode("13979584833".getBytes());//base64编码密码
sendAndReceiver(username,br,pw);//发送base64编码后的用户名,不包括@163.com
sendAndReceiver(password,br,pw);//发送base64编码后的密码

sendAndReceiver("mail from:<"+from+">",br,pw);//说明邮件来自哪里,不一定为邮件地址,不过最好还是写成正确的email地址
sendAndReceiver("rcpt to:<"+to+">",br,pw);//说明邮件发送到哪里,一定要为正确的email地址
sendAndReceiver("data",br,pw);//发送的正文 结束标志: "回车"+"."+"回车"
sendAndReceiver("from:120003808@163.com",br,pw);//邮件头 发送人
sendAndReceiver("to:120003808@163.com",br,pw);//邮件头 接收人
sendAndReceiver("subject:mail test中文",br,pw);//邮件头 邮件主题
sendAndReceiver("date:"+new Date(),br,pw);//邮件头 发送时间
sendAndReceiver("Content-Type:text/html",br,pw);//邮件头 内容类型 此内容类型为html
sendAndReceiver("Content-Transfer-Encoding:utf-8",br,pw);//邮件头 编码方式
pw.println("MIME-Version: 1.0");//邮件头 MIME版本
pw.println();//邮件头结束
pw.println("<a href='http://www.sina.com.cn'>新浪</a>");
pw.println("发送html格式邮箱测试");//邮件体 正文内容
pw.println(".");//结束标志
sendAndReceiver("QUIT",br,pw);//quit断开连接
} catch (Exception e) {
e.printStackTrace();
}
}

private void sendAndReceiver(String str, BufferedReader br, PrintWriter pw)throws IOException {
if(str!=null){
System.out.println("client>"+str);
pw.println(str);
}
String response = null;
if((response=br.readLine())!=null){
System.out.println("server>"+response);
}
}

private PrintWriter getPrintWriter(Socket socket) {
OutputStream os = null;
try {
os = socket.getOutputStream();
} catch (IOException e) {
e.printStackTrace();
}
PrintWriter pw = new PrintWriter(os,true);//自动刷新缓冲区
return pw;
}

private BufferedReader getReader(Socket socket) {
InputStream is = null;
try {
is = socket.getInputStream();
} catch (IOException e) {
e.printStackTrace();
}
BufferedReader br = new BufferedReader(new InputStreamReader(is));
return br;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值