中文字幕在线一区二区在线,久久久精品免费观看国产,无码日日模日日碰夜夜爽,天堂av在线最新版在线,日韩美精品无码一本二本三本,麻豆精品三级国产国语,精品无码AⅤ片,国产区在线观看视频

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

      時間:2024-07-28 20:05:16 研究生論文 我要投稿
      • 相關推薦

      基于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的程序設計方法 因此,程序力求精簡。故尚有須補充之處:

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

        ②提示信息。比如:缺乏郵件發送進度提示。

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

        五、結束語

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

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

      基于Vxworks實時操作系統的串口通信程序設計與實現03-18

      基于PQRM的PACS系統設計與實現03-07

      基于Perl的DoS工具設計與實現03-10

      基于PCI總線的CAN卡的設計與實現03-18

      基于MVC模式的BBS系統設計與實現03-08

      基于ASP的網絡考試系統的設計與實現03-07

      基于FPGA的TS over lP的設計與實現03-21

      基于JSP的BBS設計與實現JSP+SQL03-08

      基于MX21的PMP系統的設計與實現11-22

      主站蜘蛛池模板: 宜丰县| 久久熟女乱一区二区三区四区| 丰满少妇又紧又爽视频| 免费一级a毛片在线播出| 马尔康县| 国产黄色精品高潮播放| 国产成人午夜三级视频| 日本岛国大片不卡人妻| 亚洲精品国产福利在线观看| 和林格尔县| 苍溪县| 栾川县| 象州县| 册亨县| 三明市| 香河县| 南宫市| 日韩中文字幕在线乱码| 国产在线观看网址不卡一区| 天峨县| 霍邱县| 午夜亚洲国产精品福利| 涡阳县| 91精品国产91久久久无码色戒| 南安市| 国产啪精品视频网站免| 亚洲区福利视频免费看| 日本女优在线观看一区二区三区 | 69堂在线无码视频2020| 国产精品白浆视频免费观看| 大乳丰满人妻中文字幕韩国| 日韩精品视频免费福利在线观看| 不卡免费av在线高清| 日韩精品一区二区三区中文| 日本加勒比在线一区二区三区| 国产成人亚洲精品2020| 一区二区三区在线视频免费观看| 国产精品不卡在线视频| 亚洲色图视频一区中文字幕| 成人自拍视频国产一区| 91久久精品人妻一区二区|