程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> Delphi實現的MIME郵件格式解析類庫

Delphi實現的MIME郵件格式解析類庫

編輯:Delphi

  研究了一下Pop3的郵件接收協議,然後隨手寫了一個Pop3的郵件接收控件!Pop3的郵件協議實際上是很簡單的,知道那幾個命令就行了,與服務器之間的交互是一問一答得方式,控制起來也容易,相對而言郵件格式的解析倒是更加麻煩一點!於是也便順帶著將MIME郵件格式給熟悉了一下!總歸說來,規律性比較強,先獲取最大的頂層框架,然後根據頂層框架來判斷是否有還有子框架,依次根據給定的間隔符號迭代下來!看看類設計!首先一個MIME是要有一個郵件頭!所以這個類是必然的!

  實現了郵件頭類TDxMIMEHeader ,然後再看郵件格式,就是數據部分了,數據部分就涉及到前面說的框架問題,有Mulpart/mixed等這樣的還有子框架的結構,也有單純的text /plain這樣的純文本結構,具體的信息都在郵件格式的頭部有說明,於是將數據Part設計成了一個繼承模式,TDxMIMEPart作為數據Part的基類,然後Mulpart/mixed,text/plain等這樣的各個模塊部分都從該類繼承,Mulpart/mixed等是有內部數據模塊的,所以這個另外繼承一個多數據模塊基類TDxMimeMulPart,然後只要含有多個數據模塊的模塊都從這個類繼承去實現,除此之外,還需要一個附件等流式數據的流模塊的解析類TDxMIMEStreamPart,本類主要是將附件等信息還原出來!大致信息如此,其實應該給模塊類還要設置一個模塊頭的類的,因為只是研究也就直接寫在裡面了!大致代碼塊如下:

(******************************************************)
(*                得閒工作室                          *)
(*              郵件格式解析單元                      *)
(*                                                    *)
(*              DxMIMEParser Unit                     *)
(*    String Operate Unit Version 1.x 2010/01/05      *)
(*    Copyright(c) 2010    不得閒                     *)
(*    email:[email protected]     QQ:75492895    *)
(******************************************************)
unit DxMIMEParser;
interface
uses Windows,Classes,SysUtils,DxEmailCommon,synacode,Registry;
type
  //編碼
  TContent_Transfer_Encoding = (TE_Base64, TE_Quoted_printable, TE_7bit, TE_8bit,TE_Binary);
  //MIME郵件頭定義
  TDxMIMEHeader = class(TPersistent)
  private
    HeaderList: TStringList;
    function GetHeaderString: string;
    procedure SetFrom(const Value: string);
    function GetFrom: string;
    function GetContent_Type: string;
    procedure SetContent_Type(const Value: string);
    procedure SetToPerson(const Value: string);
    function GetToPerson: string;
    function GetMessage_ID: string;
    procedure SetMessage_ID(const Value: string);
    function GetMimeVer: string;
    procedure SetMimeVer(const Value: string);
    function GetSubject: string;
    procedure SetSubject(const Value: string);
    function GetDateTime: TDateTime;
    procedure SetDateTime(const Value: TDateTime);
  public
    constructor Create;
    destructor Destroy;override;
    function GetFieldValue(FIEld: string): string;
    procedure SetFieldValue(FIEld: string;Value: string);
    property From: string read GetFrom write SetFrom;//來自誰
    property Content_Type: string read GetContent_Type write SetContent_Type;
    property ToPerson: string read GetToPerson write SetToPerson;//發送給誰
    property Message_ID: string read GetMessage_ID write SetMessage_ID;
    property Mime_Ver: string read GetMimeVer write SetMimeVer;//版本
    property Subject: string read GetSubject write SetSubject;//題目
    property DateTime: TDateTime read GetDateTime write SetDateTime; //發送時間
    property HeaderString: string read GetHeaderString;
  end;
  //MIME段
  TDxMIMEPart = class(TPersistent)
 private
    PartList: TStringList;
    SplitStr: string;
    FContent_Transfer_Encoding: TContent_Transfer_Encoding;
    FTopType: string;
    FContent_Type: string;
    FContent_Disposition: string;
    FContent_ID: string;
    FContent_Base: string;
    FContent_Location: string;
    procedure SetContent_Type(const Value: string);
    procedure SetContent_Disposition(c

[1] [2] [3] [4] 下一頁

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