程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> [JAVA100例]046、使用SMTP協議接收郵件

[JAVA100例]046、使用SMTP協議接收郵件

編輯:關於JAVA

import java.io.*;
import java.net.*;
/**
* <p>Title: SMTP協議接收郵件</p>
* <p>Description: 通過Socket連接POP3服務器,使用SMTP協議接收郵件服務器中的郵件</p>
* <p>Copyright: Copyright (c) 2003</p>
* <p>Filename: </p>
* @version 1.0
*/
class POP3Demo
{
/**
*<br>方法說明:主方法,接收用戶輸入
*<br>輸入參數:
*<br>返回類型:
*/
 public static void main(String[] args){
  if(args.length!=3){
  System.out.println("USE: java POP3Demo mailhost user password");
  }
  new POP3Demo().receive(args[0],args[1],args[2]);
 }
/**
*<br>方法說明:接收郵件
*<br>輸入參數:String popServer 服務器地址
*<br>輸入參數:String popUser 郵箱用戶名
*<br>輸入參數:String popPassword 郵箱密碼
*<br>返回類型:
*/
 public static void receive (String popServer, String popUser, String popPassword)
 {
  String POP3Server = popServer;
  int POP3Port = 110;
  Socket client = null;
  try
  {
   // 創建一個連接到POP3服務程序的套接字。
   client = new Socket (POP3Server, POP3Port);
   //創建一個BufferedReader對象,以便從套接字讀取輸出。
   InputStream is = client.getInputStream ();
   BufferedReader sockin;
   sockin = new BufferedReader (new InputStreamReader (is));
   //創建一個PrintWriter對象,以便向套接字寫入內容。
   OutputStream os = client.getOutputStream ();
   PrintWriter sockout;
   sockout = new PrintWriter (os, true); // true for auto-flush
   // 顯示POP3握手信息。
   System.out.println ("S:" + sockin.readLine ());

   /*--  與POP3服務器握手過程  --*/ 
   System.out.print ("C:");
   String cmd = "user "+popUser;
   // 將用戶名發送到POP3服務程序。
   System.out.println (cmd);
   sockout.println (cmd);
   // 讀取POP3服務程序的回應消息。
   String reply = sockin.readLine ();
   System.out.println ("S:" + reply);
System.out.print ("C:");
   cmd = "pass ";
   // 將密碼發送到POP3服務程序。
   System.out.println(cmd+"*********");
   sockout.println (cmd+popPassword);
   // 讀取POP3服務程序的回應消息。
   reply = sockin.readLine ();
   System.out.println ("S:" + reply);

    
   System.out.print ("C:");
   cmd = "stat";
   // 獲取郵件數據。
   System.out.println(cmd);
   sockout.println (cmd);
   // 讀取POP3服務程序的回應消息。
   reply = sockin.readLine ();
   System.out.println ("S:" + reply);
   if(reply==null) return;
   System.out.print ("C:");
   cmd = "retr 1";
   // 將接收第一豐郵件命令發送到POP3服務程序。
   System.out.println(cmd);
   sockout.println (cmd);

   // 輸入了RETR命令並且返回了成功的回應碼,持續從套接字讀取輸出,
   // 直到遇到<CRLF>.<CRLF>。這時從套接字讀出的輸出就是郵件的內容。
   if (cmd.toLowerCase ().startsWith ("retr") &&
    reply.charAt (0) == ´+´)
    do
    {
     reply = sockin.readLine ();
     System.out.println ("S:" + reply);
     if (reply != null && reply.length () > 0)
      if (reply.charAt (0) == ´.´)
       break;
    }
    while (true);
   cmd = "quit";
   // 將命令發送到POP3服務程序。
   System.out.print (cmd);
   sockout.println (cmd);
  }
  catch (IOException e)
  {
   System.out.println (e.toString ());
  }
  finally
  {
   try
   { if (client != null)
     client.close ();
   }
   catch (IOException e)
   {
   }
  }
 }
}

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved