javasocket實(shí)現(xiàn)SMTP協(xié)議發(fā)送郵件_第1頁
javasocket實(shí)現(xiàn)SMTP協(xié)議發(fā)送郵件_第2頁
免費(fèi)預(yù)覽已結(jié)束,剩余1頁可下載查看

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1 / 9java socket 實(shí)現(xiàn) SMTP 協(xié)議發(fā)送郵件 文章分類:Java 編程package com.socket.test;import java.io.BufferedReader;import java.io.DataOutputStream;import java.io.IOException;import java.io.InputStreamReader;import .Socket;import .UnknownHostException;import ernal.impl.dv.util.Base64; /*

2、通過 socket 向 smtp 協(xié)議服務(wù)器發(fā)送郵件* author fuyanqing*/public class SocketMail String mailServer;String from;String to;String content;String lineFeet = rn;private int port = 25;Socket client;BufferedReader in;DataOutputStream os;public String getContent() return content;public void setContent(String content)

3、 this.content = content;public String getMailServer() return mailServer;public void setMailServer(String mailServer) this.mailServer = mailServer;public String getFrom() return from;public void setFrom(String from) this.from = from;public String getTo() return to;public void setTo(String to) this.to

4、 = to;/*2 / 9* 初始化連接* return*/private boolean init() boolean boo = true;if(mailServer=null | .equals(mailServer)return false;try client = new Socket(mailServer,port);in = new BufferedReader(new InputStreamReader(client.getInputStream();os = new DataOutputStream(client.getOutputStream();String isConn

5、ect = response(); if(isConnect.startsWith(220)elseSystem.out.println( 建立連接失?。?+isConnect);boo = false; catch (UnknownHostException e) System.out.println( 建立連接失敗! );e.printStackTrace();boo = false; catch (IOException e) System.out.println( 讀取流失敗! ); e.printStackTrace();boo = false;return boo;/* 發(fā)送 sm

6、tp 指令* 并返回服務(wù)器響應(yīng)信息3 / 9*/private String sendCommand(String msg) String result = null;try os.writeBytes(msg); os.flush();result = response(); catch (IOException e) e.printStackTrace();return result;/* 讀取服務(wù)器端響應(yīng)信息* return*/private String response()String result = null;try result = in.readLine(); catch (

7、IOException e) e.printStackTrace();return result;/* 關(guān)閉*/ private void close() try os.close(); in.close();client.close(); catch (IOException e) e.printStackTrace(); /* 發(fā)送郵件* return*/ public boolean sendMail()/ 初始化if(client=null)if(init() else return false;/ 判斷 from,toif(from=null | from.isEmpty() | t

8、o = null | to.isEmpty() return false;/ 進(jìn)行握手String result = sendCommand(HELO +mailServer+lineFeet);if(isStartWith(result,250)elseSystem.out.println( 握手失?。?+result); return false;/ 驗(yàn)證發(fā)信人信息String auth = sendCommand(AUTH LOGIN+lineFeet); if(isStartWith(auth,334)else return false;String user = sendComman

9、d(new String(Base64.encode(*.getBytes()+lineFeet);if(isStartWith(user,334)4 / 9else return false;String pass = sendCommand(new String(Base64.encode(*.getBytes()+lineFeet);if(isStartWith(pass,235)else return false;/ 發(fā)送指令String f = sendCommand(Mail From:+lineFeet); if(isStartWith(f,250)elsereturn fals

10、e;String toStr = sendCommand(RCPT TO:+lineFeet);if(isStartWith(toStr,250)5 / 9elsereturn false;String data = sendCommand(DATA+lineFeet); if(isStartWith(data,354)elsereturn false;StringBuilder sb = new StringBuilder(); sb.append(From:+lineFeet);sb.append(To:+lineFeet); sb.append(Subject:test+lineFeet

11、); sb.append(Date:2010/10/27 17:30+lineFeet); sb.append(Content-Type:text/plain;charset=GB2312+lineFeet);sb.append(lineFeet);sb.append(content); sb.append(lineFeet+.+lineFeet);String conStr = sendCommand(sb.toString(); if(isStartWith(conStr,250)elsereturn false;/quitString quit = sendCommand(QUIT+li

12、neFeet); if(isStartWith(quit,221)elsereturn false;close();return true;private boolean isStartWith(String res,String with)return res.startsWith(with);public static void main(String args) SocketMail mail = new SocketMail();mail.setMailServer(); mail.setFrom(*); mail.setTo(*);mail.setContent(hello,this

13、 is a test mail!);boolean boo = mail.sendMail(); if(boo)System.out.println( 郵件發(fā)送成功! ); elseSystem.out.println( 郵件發(fā)送失??! );SMT 啲連接和收發(fā)過程:a. 建立 TCP 連接。b. 客戶端發(fā)送 HELO 命令以標(biāo)識(shí)發(fā)件人自己的身份,然后客戶端發(fā)送 MAIL 命令服 務(wù)器端正希望以 OKf 乍為響應(yīng),表明準(zhǔn)備接收。c. 客戶端發(fā)送 RCPT 命令,以標(biāo)識(shí)該電子郵件的計(jì)劃接收人,可以有多個(gè)RCPT6 / 9行d. 協(xié)商結(jié)束,發(fā)送郵件,用命令 DATA 發(fā)送e. 以 . 表示結(jié)束輸入內(nèi)容一起發(fā)送出去f. 結(jié)束此次發(fā)送,用 QUIT 命令退出。SMTP 勺基本命令集:HELO 向服務(wù)器標(biāo)識(shí)用戶身份MAIL 初始化郵件傳輸 mail from: RCPT標(biāo)識(shí)單個(gè)的郵件接收人;常在 MAIL 命令后面可有多個(gè) rcpt to: DATA在單個(gè)或多個(gè) RCPT 命令后,表示所有的郵件接收人已標(biāo)識(shí),初始化數(shù)據(jù)傳輸,以 . 結(jié)束。NOOP 無操乍,服務(wù)器應(yīng)響應(yīng) OKRSET重置會(huì)話,當(dāng)前傳

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論