?? mailsender.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="Subject:"+subject+"\r\n"+content;
}
}
/****************************************************
* 作者:孫衛琴 *
* 來源:<<Java網絡編程精解>> *
* 技術支持網址:www.javathinker.org *
***************************************************/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -