• Vui lòng đọc nội qui diễn đàn để tránh bị xóa bài viết
  • Tìm kiếm trước khi đặt câu hỏi

Quản lý email đã nhận

Mã nguồn các chương trình tiện ích

Điều hành viên: tungcan5diop, QUANITGROBEST

Hình đại diện của người dùng
nhochoclaptrinh
Thành viên danh dự
Thành viên danh dự
Bài viết: 514
Ngày tham gia: T.Bảy 28/05/2011 12:10 pm
Has thanked: 15 time
Been thanked: 83 time

Quản lý email đã nhận

Gửi bàigửi bởi nhochoclaptrinh » T.Năm 23/06/2011 8:49 pm

Tên chương trình: Nhận mail thông qua các Port mail
Ngôn ngữ lập trình: VB .NET (Console)
Tác giả: Sưu tầm
Chức năng: Nhận mail từ tất cả các cổng như IMAp, POP3,...


  1. Imports System.Net.Sockets
  2. Imports System.Text
  3.  
  4. Public Module MailTest
  5.  
  6.     Public Sub Main()
  7.         Dim Server, Name, Password As String
  8.         'Mặc định là POP3
  9.         Console.Write("Input POP3 Server: ")
  10.         Server = Console.ReadLine()
  11.         Console.Write("Input Mail name: ")
  12.         Name = Console.ReadLine()
  13.         Console.Write("Password: ")
  14.         Password = Console.ReadLine()
  15.         Console.WriteLine()
  16.  
  17.         Dim POP3 As New Pop3Client
  18.         POP3.Connect(Server, Name, Password)
  19.  
  20.         Dim Messages() As MessageHeader = POP3.GetMessageList()
  21.         Console.WriteLine(Messages.Length().ToString() & " messages.")
  22.  
  23.         Dim Message As MessageHeader
  24.         For Each Message In Messages
  25.             Console.WriteLine(New String("-"c, 60))
  26.             Console.WriteLine("Message Number: " & Message.Number.ToString())
  27.             Console.WriteLine("Size: " & Message.Size.ToString())
  28.             Console.WriteLine()
  29.             Console.WriteLine(POP3.GetMessageContent(Message.Number))
  30.             Console.WriteLine(New String("-"c, 60))
  31.             Console.WriteLine()
  32.         Next
  33.  
  34.         Console.WriteLine("Press Enter to disconnect.")
  35.         Console.ReadLine()
  36.         POP3.Disconnect()
  37.     End Sub
  38.  
  39. End Module
  40.  
  41.  
  42.  
  43. Public Class Pop3Client
  44.     Inherits System.ComponentModel.Component
  45.  
  46.     Private Client As New TcpClient
  47.     Private Stream As NetworkStream
  48.  
  49.     Private _Connected As Boolean = False
  50.     Public ReadOnly Property Connected() As Boolean
  51.         Get
  52.             Return _Connected
  53.         End Get
  54.     End Property
  55.  
  56.     Private Class Commands
  57.         Public Const List As String = "LIST" & vbNewLine
  58.         Public Const User As String = "USER "
  59.         Public Const Password As String = "PASS "
  60.         Public Const Delete As String = "DELE "
  61.         Public Const GetMessage As String = "RETR "
  62.         Public Const Quit As String = "QUIT" & vbNewLine
  63.         Public Const ServerConfirm As String = "+OK"
  64.         Public Const ServerNoMoreData As String = "."
  65.     End Class
  66.  
  67.     Public Sub Connect(ByVal serverName As String, ByVal userName As String, ByVal password As String)
  68.         If Connected Then Me.Disconnect()
  69.  
  70.         Client.Connect(serverName, 110) 'POP3 port
  71.         'Các port mail
  72.         'POP3 - port 110
  73.  
  74.         'IMAP - port 143
  75.  
  76.         'SMTP - port 25
  77.  
  78.         'HTTP - port 80
  79.  
  80.         'Secure SMTP (SSMTP) - port 465
  81.  
  82.         'Secure IMAP (IMAP4-SSL) - port 585
  83.  
  84.         'IMAP4 over SSL (IMAPS) - port 993
  85.  
  86.         'Secure POP3 (SSL-POP) - port 995
  87.  
  88.         Stream = Client.GetStream()
  89.  
  90.         CheckResponse(GetResponse())
  91.  
  92.         Send(Commands.User & userName & vbNewLine)
  93.  
  94.         CheckResponse(GetResponse())
  95.  
  96.         Send(Commands.Password & password & vbNewLine)
  97.  
  98.         CheckResponse(GetResponse())
  99.  
  100.         _Connected = True
  101.     End Sub
  102.  
  103.     Public Sub Disconnect()
  104.         If Connected Then
  105.             Send(Commands.Quit)
  106.             CheckResponse(GetResponse())
  107.             _Connected = False
  108.         End If
  109.     End Sub
  110.  
  111.     Public Function GetMessageList() As MessageHeader()
  112.         If Not Connected Then Throw New InvalidOperationException("Not connected.")
  113.  
  114.         Send(Commands.List)
  115.         CheckResponse(GetResponse())
  116.  
  117.         Dim Messages As New ArrayList
  118.         Do
  119.             Dim Response As String = GetResponse()
  120.  
  121.             If Response = Commands.ServerNoMoreData Then
  122.                 Return CType(Messages.ToArray(GetType(MessageHeader)), MessageHeader())
  123.             Else
  124.                 Dim Values() As String = Response.Split()
  125.                 Dim Message As New MessageHeader(Int32.Parse(Values(0)), Int32.Parse(Values(1)))
  126.  
  127.                 Messages.Add(Message)
  128.             End If
  129.         Loop
  130.     End Function
  131.  
  132.     Public Function GetMessageContent(ByVal messageNumber As Integer) As String
  133.         If Not Connected Then Throw New InvalidOperationException("Not connected.")
  134.  
  135.         Send(Commands.GetMessage & messageNumber.ToString() & vbNewLine)
  136.         CheckResponse(GetResponse)
  137.         Dim Line, Content As String
  138.  
  139.         Do
  140.             Line = GetResponse()
  141.             If Line = Commands.ServerNoMoreData Then
  142.                 Return Content
  143.             Else
  144.                 Content &= Line & vbNewLine
  145.             End If
  146.         Loop
  147.     End Function
  148.  
  149.     Public Sub DeleteMessage(ByVal messageNumber As Integer)
  150.         If Not Connected Then Throw New InvalidOperationException("Not connected.")
  151.  
  152.         Send(Commands.Delete & messageNumber.ToString() & vbNewLine)
  153.         CheckResponse(GetResponse())
  154.     End Sub
  155.  
  156.     Private Sub Send(ByVal message As String)
  157.         Dim MessageBytes() As Byte = Encoding.ASCII.GetBytes(message)
  158.         Stream.Write(MessageBytes, 0, MessageBytes.Length)
  159.  
  160.         Debug.WriteLine(message)
  161.     End Sub
  162.  
  163.     Private Function GetResponse() As String
  164.         Dim Character, Response As String
  165.         Do
  166.             Character = Chr(Stream.ReadByte()).ToString()
  167.             Response &= Character
  168.         Loop Until Character = Chr(13)
  169.  
  170.         Response = Response.Trim(New Char() {Chr(13), Chr(10)})
  171.         Debug.WriteLine(Response)
  172.         Return Response
  173.     End Function
  174.  
  175.     Private Sub CheckResponse(ByVal response As String)
  176.         If Not (response.Substring(0, 3) = Commands.ServerConfirm) Then
  177.             Client.Close()
  178.             _Connected = False
  179.             Throw New ApplicationException("Response " & response & " not expected.")
  180.         End If
  181.     End Sub
  182.  
  183.     Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
  184.         If disposing Then Disconnect()
  185.         MyBase.Dispose(disposing)
  186.     End Sub
  187.  
  188. End Class
  189.  
  190. Public Class MessageHeader
  191.     Private _Number As Integer
  192.     Private _Size As Integer
  193.  
  194.     Public ReadOnly Property Number() As Integer
  195.         Get
  196.             Return _Number
  197.         End Get
  198.     End Property
  199.  
  200.     Public ReadOnly Property Size() As Integer
  201.         Get
  202.             Return _Size
  203.         End Get
  204.     End Property
  205.  
  206.     Public Sub New(ByVal number As Integer, ByVal size As Integer)
  207.         Me._Number = number
  208.         Me._Size = size
  209.     End Sub
  210. End Class


Sad eyes never lie :((

Quay về “[.NET] Mã nguồn chương trình tiện ích”

Đang trực tuyến

Đang xem chuyên mục này: Không có thành viên nào trực tuyến.1 khách