1. <tt id="5hhch"><source id="5hhch"></source></tt>
    1. <xmp id="5hhch"></xmp>

  2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

    <rp id="5hhch"></rp>
        <dfn id="5hhch"></dfn>

      1. 基于ESMTP的電子郵件發送程序的設計與實現

        時間:2022-11-16 15:53:37 研究生論文 我要投稿
        • 相關推薦

        基于ESMTP的電子郵件發送程序的設計與實現

          摘 要:本文以VB.NET為開發平臺,利用Socket套接宇編程,實現了基于ESMTP的郵件發送程序。文中深入講解了ESMTP的原理及電子郵件發送程序的設計與實現方法。

        基于ESMTP的電子郵件發送程序的設計與實現

          關鍵詞:ESMTP,電子郵件,發送程序,VB.NET,Socke

          一、引言

          隨著Intemet/Intranet的迅猛發展,電子郵件(E—Mail)已成為因特網上非常流行、非常方便的通信方式。但是,隨之而來的是大量的廣告郵件和垃圾郵件的泛濫,為應對這種情況,許多E—Mail服務商和ISP將它們的SMTP系統升級成了ESMTP系統。

          本文采用微軟最新的。NET技術,以VB.NET為開發平臺,利用Socket套接字編程,開發了基于ESMTP協議的郵件發送程序,這里將對相關原理及具體設計進行討論。

          二、郵件傳輸協議

          1.ESMTP簡介所謂ESMTP(Extended SMTP),即擴展的簡單郵件傳輸協議,是郵件服務器系統為了限制非本系統的用戶利用本系統散發垃圾郵件等不當行為而開設的一項安全認證服務。在ESMTP服務器上,發送郵件需要對用戶的身份進行驗證。它與傳統的SMTP方式相比,多了一道用戶身份驗證手續,此外,其郵件發送過程與傳統的SMTP方式一致。

          2.ESMTP的運行過程ESMTP的運行,首先要發送命令建立一個可靠的有序數據流傳輸通道(TCP連接),然后客戶機向服務器發送其它命令,然后根據服務器回送的響應決定下一步操作,并最終實現郵件的傳送。整個郵件發送過程就是兩者之間進行信息交換的過程。

          一般地,郵件發送過程將依次發送如下命令并得到響應(如表1)(以163為例):

          三、程序實現我們以VB.NET為平臺,通過Socket套接字編程序來實現郵件發送功能。

          1.命名空間本文中主要使用了2個命名空間及2個類。

          (1)System.Net.Sockets命名空間System.Net.Sockets命名空間為需要嚴密控制同絡訪問的開發人員提供了Windows Sockets接口的托管實現。其中,定義了Socket類可用于實現發送郵件。該類的常用成員有。:

         、 構造函數 Socket構造函數:用于初始化Socket類的新實例。

         、 方法

          (2)System.Net命名空間System.Net命名空間為多種協議提供了編程接口。

          (3)其他類System.Convet類:用于數據類型轉換;System.Text.Encoding類:表示數據編碼:

          2.程序設計為減少程序書寫量,可在窗口類之前使用以下語句導人命名空間及其中的類:

          Imports System Net.SocketsImports System.NetImports System.Text.EncodingImports System.Convert這樣,就可以直接弓I用其中的成員了。

          另外,窗口類中還要初始化Socket類:

          Public MySocket As New Socket一(Add ressFam y.InterNetwork,一SocketType.Stream.ProtocolType.Tcp)L 程序界面設計其中,7個文本框的Name屬性從上到下依次為:SMTPServ.

          el“ UserAccount UserPassword SenderAddress、ReceiverAddress EMailSubject、EmailContent。2個按鈕的Name屬性依次為:Send-Mail、QuitForm。

          (2)發送電子郵件程序程序中,首先把要發送的數據(包括郵件內容和命令)存儲在變量SendData中,然后調用自定義的MySender函數發送出去:

          . rivate Sub SendMall_』=lick(ByVal sender As System.

          Object,ByVal e As System.EventArgs)Handles Send-Mall ClickDIm SendData As String, HostEndPoint As IPEndPoint,HostAddress As I PAdd ressTryHostAddress=Dns.Resolve(SMTPServer,Text)。AddressList(0)HOstEndPOint = New I PEndPoint(HostAddress,25)連接服務器MySocket.Connect(HostEndPoint)Catch ex As ExceptionMsgBox( 連接失敗 ):GoTo QuitSendEnd TryIf Not W ait( 220 )Then GoTo QuitSend建立會話連接SendData = SMTPServer.TextSendData = SendData.Substring(SendData Index0f( . ) + 1)SendData = EHLO + SendData + vbC rLfMySende r(SendData 1If Not Wait( 250 )Then GoTo QuitSend要求身份驗證SendData = AUTH LOGIN + vbCrLfMySender(SendData) .

          If Not W ait( 334 )Then GoTo QuitSend驗證用戶帳號SendData = TOBase64Strinq(ASCIIGetBytes(UserAccount.Text))+vbCrLfMySender(SendData)If Not W ait( 334 )Then GoTo QuitSend驗證用戶密碼SendData = TOBase64Strinq(ASCI1.

          GetBytes(Use rPassword.Text))+vbC rLfMySender(SendData)If Not W ait( 235 )Then GoTo QuitSend發件人地址SendData = MAlL FROM: +SenderAdd ress.Text + vbCrLfMySender(SendData)If Not W ait( 250 )Then GoTo QuitSend收件人地址SendData = RCPT TO: +ReceiverAdd ress.Text + vbC rLfMySender(SendData)If Not Wait《 250 )Then GoTo QuitSend請求發送數據SendData = DATA vbCrLfMySender(SendData)If Not Wait《 354 )Then GoTo QuitSend顯示發件人地址SendData = F rOm: +SenderAddress.Text + vbCrLf加上收件人地址SendData = SendData + To: +ReceiverAdd ress.Text + vbCrLf加上主題SendData =SendData + Subject: +EMailSubject.Text 4-vbCrLf加上郵件正文SendData = SendData + EMailContent Text加上郵件結束符SendData=vbCrLf+SendData + . + vbCrLfMySender《SendData)If Not W ait《 250 )Then GoTo QuitSend退出會話連接SendData = QUIT vbCrLfMySender(SendData)If Not W aitl 221 )Then GoTo QuitSendQuitSend: 關閉MySocket.Shutdown(SocketShutdown.

          Receive)MySocket.Close(】

          End Sub(3)自定義函數①數據發送程序程序會等待,直到Socket處于可寫狀態時,則將數據發送出去。

          Public Function MySender《ByVaI Data As String)Dim MyW riteBufer As Byte 1)MyW riteBuffer= ASC GetBytes《Data)lf MySocket.Poll(一1,SelectMode.

          SelectW rite)ThenMySocket.Send《MyW riteBuffer)End Function②等待應答函數程序最多等待5O秒,直到Socket處于可讀狀態時,則讀取數據,并與期待的應答碼相比較。

          Public Function W ait l ByVal ResDOnseCOde As String) AsBooleanDim MyReadBufer(1 024)As ByteDim TotalStr As StringDim PreThreeW ord As StringMySocket.Receive《MyReadBuffer)If MySocket.Poll《50000,一SelectMode.SelectRead)ThenMySocket.Receive《MvReadBuffer)TotaIStr= ASCI1.GetString lMyReadBufer)PreTh reeWord=TotalStr.Substring(0 3)If PreThreeW ord <> ResDOnseCOde ThenRetu rn FalseRetu rn TrueEnd Function

          四、幾點說明(1)關于ESMTP中繼服務器設置目前,絕大多數郵件服務器都支持ESMTP,但是有些服務器僅支持通過Web頁面發送郵件,而不支持這種客戶端程序發送郵件。本文程序在smtp.163.eom測試發送成功。

          (2)關于程序的完整性本文利用Socket編程實現基于ESMTP的郵件發送功能,重在講解ESMTP的原理、運行過程,以及Socket的程序設計方法 因此,程序力求精簡。故尚有須補充之處:

          ①錯誤處理。比如:未對郵件地址輸入錯誤進行處理。

         、谔崾拘畔ⅰ1热纾喝狈︵]件發送進度提示。

          在實用程序中,這些都是必需的,但由于篇幅所限,故在本文的郵件發送程序中將這部分省去,讀者可自行補充完整。

          五、結束語

          隨著電子郵件的普及,垃圾郵件等危害服務器正常運轉的行為也日益增多,因此,絕大多數服務器均采用ESMTP進行用戶身份認證。同時,也就需要客戶端軟件能夠完成身份認證工作。本文在VB.NET中利用套接字編程實現了此功能。

        【基于ESMTP的電子郵件發送程序的設計與實現】相關文章:

        基于minigui的網真機界面的實現08-05

        都市頻道制作網的設計與實現05-29

        基于web的異地并行設計與制造系統研究06-02

        基于勝任力的企業個體績效管理流程設計06-03

        基于CS管理的房地產企業開發設計06-04

        基于PLC的斷路器型式試驗系統設計03-10

        C語言程序設計 (一)05-11

        城市旅游網站的設計與實現論文(精選6篇)05-07

        基于電話網絡的熱網遠程控制系統設計05-11

        淺談基于工作流程的高職《國際貿易實務》課程教學模式設計06-13

        国产高潮无套免费视频_久久九九兔免费精品6_99精品热6080YY久久_国产91久久久久久无码

        1. <tt id="5hhch"><source id="5hhch"></source></tt>
          1. <xmp id="5hhch"></xmp>

        2. <xmp id="5hhch"><rt id="5hhch"></rt></xmp>

          <rp id="5hhch"></rp>
              <dfn id="5hhch"></dfn>