首页 > 代码库 > 第一章 java网络编程入门_mailClient.java
第一章 java网络编程入门_mailClient.java
import java.net.*;
import java.io.*;
public class MailSender{
private String smtpServer="smtp.mydomain.com"; //SMTP邮件服务器的主机名
//private String smtpServer="localhost";
private int port=25;
public static void main(String[] args){
Message msg=new Message("tom@abc.com", //发送者的邮件地址
"linda@def.com", //接收者的邮件地址
"hello", //邮件标题
"hi,I miss you very much."); //邮件正文
new MailSender().sendMail(msg);
}
public void sendMail(Message msg){
Socket socket=null;
try{
socket = new Socket(smtpServer,port); //连接到邮件服务器
BufferedReader br =getReader(socket);
PrintWriter pw = getWriter(socket);
String localhost= InetAddress.getLocalHost().getHostName(); //客户主机的名字
sendAndReceive(null,br,pw); //仅仅是为了接收服务器的响应数据
sendAndReceive("HELO " + localhost,br,pw);
sendAndReceive("MAIL FROM: <" + msg.from+">",br,pw);
sendAndReceive("RCPT TO: <" + msg.to+">",br,pw);
sendAndReceive("DATA",br,pw); //接下来开始发送邮件内容
pw.println(msg.data); //发送邮件内容
System.out.println("Client>"+msg.data);
sendAndReceive(".",br,pw); //邮件发送完毕
sendAndReceive("QUIT",br,pw); //结束通信
}catch (IOException e){
e.printStackTrace();
}finally{
try{
if(socket!=null)socket.close();
}catch (IOException e) {e.printStackTrace();}
}
}
/** 发送一行字符串,并接收一行服务器的响应数据*/
private void sendAndReceive(String str,BufferedReader br,PrintWriter pw) throws IOException{
if (str != null){
System.out.println("Client>"+str);
pw.println(str); //发送完str字符串后,还会发送“\r\n”。
}
String response;
if ((response = br.readLine()) != null)
System.out.println("Server>"+response);
}
private PrintWriter getWriter(Socket socket)throws IOException{
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut,true);
}
private BufferedReader getReader(Socket socket)throws IOException{
InputStream socketIn = socket.getInputStream();
return new BufferedReader(new InputStreamReader(socketIn));
}
}
class Message{ //表示邮件
String from; //发送者的邮件地址
String to; //接收者的邮件地址
String subject; //邮件标题
String content; //邮件正文
String data; //邮件内容,包括邮件标题和正文
public Message(String from,String to, String subject, String content){
this.from=from;
this.to=to;
this.subject=subject;
this.content=content;
data="http://www.mamicode.com/Subject:"+subject+"\r\n"+content;
}
}
//authMailclient.java
import java.io.*;
public class MailSender{
private String smtpServer="smtp.mydomain.com"; //SMTP邮件服务器的主机名
//private String smtpServer="localhost";
private int port=25;
public static void main(String[] args){
Message msg=new Message("tom@abc.com", //发送者的邮件地址
"linda@def.com", //接收者的邮件地址
"hello", //邮件标题
"hi,I miss you very much."); //邮件正文
new MailSender().sendMail(msg);
}
public void sendMail(Message msg){
Socket socket=null;
try{
socket = new Socket(smtpServer,port); //连接到邮件服务器
BufferedReader br =getReader(socket);
PrintWriter pw = getWriter(socket);
String localhost= InetAddress.getLocalHost().getHostName(); //客户主机的名字
sendAndReceive(null,br,pw); //仅仅是为了接收服务器的响应数据
sendAndReceive("HELO " + localhost,br,pw);
sendAndReceive("MAIL FROM: <" + msg.from+">",br,pw);
sendAndReceive("RCPT TO: <" + msg.to+">",br,pw);
sendAndReceive("DATA",br,pw); //接下来开始发送邮件内容
pw.println(msg.data); //发送邮件内容
System.out.println("Client>"+msg.data);
sendAndReceive(".",br,pw); //邮件发送完毕
sendAndReceive("QUIT",br,pw); //结束通信
}catch (IOException e){
e.printStackTrace();
}finally{
try{
if(socket!=null)socket.close();
}catch (IOException e) {e.printStackTrace();}
}
}
/** 发送一行字符串,并接收一行服务器的响应数据*/
private void sendAndReceive(String str,BufferedReader br,PrintWriter pw) throws IOException{
if (str != null){
System.out.println("Client>"+str);
pw.println(str); //发送完str字符串后,还会发送“\r\n”。
}
String response;
if ((response = br.readLine()) != null)
System.out.println("Server>"+response);
}
private PrintWriter getWriter(Socket socket)throws IOException{
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut,true);
}
private BufferedReader getReader(Socket socket)throws IOException{
InputStream socketIn = socket.getInputStream();
return new BufferedReader(new InputStreamReader(socketIn));
}
}
class Message{ //表示邮件
String from; //发送者的邮件地址
String to; //接收者的邮件地址
String subject; //邮件标题
String content; //邮件正文
String data; //邮件内容,包括邮件标题和正文
public Message(String from,String to, String subject, String content){
this.from=from;
this.to=to;
this.subject=subject;
this.content=content;
data="http://www.mamicode.com/Subject:"+subject+"\r\n"+content;
}
}
//authMailclient.java
import java.net.*;
import java.io.*;
public class MailSenderWithAuth{
private String smtpServer="smtp.163.com"; //SMTP邮件服务器的主机名
private int port=25;
public static void main(String[] args){
Message msg=new Message("18889342629@163.com", //发送者的邮件地址
"1621255215@qq.com", //接收者的邮件地址
"hello", //邮件标题
"hi,I miss you very much."); //邮件正文
new MailSenderWithAuth().sendMail(msg);
}
public void sendMail(Message msg){
Socket socket=null;
try{
socket = new Socket(smtpServer,port); //连接到邮件服务器
BufferedReader br =getReader(socket);
PrintWriter pw = getWriter(socket);
String localhost= InetAddress.getLocalHost().getHostName(); //客户主机的名字
String username="18889342629@163";
String password="38633638sa";
//对用户名和口令进行base64编码
username = new sun.misc.BASE64Encoder().encode(username.getBytes());
password = new sun.misc.BASE64Encoder().encode(password.getBytes());
sendAndReceive(null,br,pw); //仅仅是为了接收服务器的响应数据
sendAndReceive("EHLO " + localhost,br,pw);
sendAndReceive("AUTH LOGIN",br,pw); //认证命令
sendAndReceive(username,br,pw); //用户名
sendAndReceive(password,br,pw); //口令
sendAndReceive("MAIL FROM: " + msg.from+"",br,pw);
sendAndReceive("RCPT TO: " + msg.to+"",br,pw);
sendAndReceive("DATA",br,pw); //接下来开始发送邮件内容
pw.println(msg.data); //发送邮件内容
System.out.println("Client>"+msg.data);
sendAndReceive(".",br,pw); //邮件发送完毕
sendAndReceive("QUIT",br,pw); //结束通信
}catch (IOException e){
e.printStackTrace();
}finally{
try{
if(socket!=null)socket.close();
}catch (IOException e) {e.printStackTrace();}
}
}
/** 发送一行字符串,并接收一行服务器的响应数据*/
private void sendAndReceive(String str,BufferedReader br,PrintWriter pw) throws IOException{
if (str != null){
System.out.println("Client>"+str);
pw.println(str); //发送完str字符串后,还会发送“\r\n”。
}
String response;
if ((response = br.readLine()) != null)
System.out.println("Server>"+response);
}
private PrintWriter getWriter(Socket socket)throws IOException{
OutputStream socketOut = socket.getOutputStream();
return new PrintWriter(socketOut,true);
}
private BufferedReader getReader(Socket socket)throws IOException{
InputStream socketIn = socket.getInputStream();
return new BufferedReader(new InputStreamReader(socketIn));
}
}
class Message{ //表示邮件
String from; //发送者的邮件地址
String to; //接收者的邮件地址
String subject; //邮件标题
String content; //邮件正文
String data; //邮件内容,包括邮件标题和正文
public Message(String from,String to, String subject, String content){
this.from=from;
this.to=to;
this.subject=subject;
this.content=content;
data="http://www.mamicode.com/Subject:"+subject+"\r\n"+content;
}
}
第一章 java网络编程入门_mailClient.java
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。