用C#从POP3服务器取得邮件
2006-09-11 13:54
295 查看
it's easy to implement an application if we know the algorithm to retrieve mail from a POP server. In this article, I use the
here's the code for when the Connect Button is clicked:
here's the code for when the Disconnect Button is clicked:
here's code when Retrieve Button clicked:
now, you can set the mail message number and then click Retrieve button. Then you'll get the mail according to the mail number that you wrote on Mail Number Box.
RFC 1725
[align=right]Add by : Huobazi (2006-3-05:12:46) [/align]
TcpClientand
NetworkStreamclasses. Firstly, declare public variables:
public TcpClient Server; public NetworkStream NetStrm; public StreamReader RdStrm; public string Data; public byte[] szData; public string CRLF = "/r/n";
here's the code for when the Connect Button is clicked:
private void ConnectBtn_Click(object sender, System.EventArgs e) { // change cursor into wait cursor Cursor cr = Cursor.Current; Cursor.Current = Cursors.WaitCursor; // create server POP3 with port 110 Server = new TcpClient(POPServ.Text,110); Status.Items.Clear(); try { // initialization NetStrm = Server.GetStream(); RdStrm= new StreamReader(Server.GetStream()); Status.Items.Add(RdStrm.ReadLine()); // Login Process Data = "USER "+ User.Text+CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); Status.Items.Add(RdStrm.ReadLine()); Data = "PASS "+ Passw.Text+CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); Status.Items.Add(RdStrm.ReadLine()); // Send STAT command to get information ie: number of mail and size Data = "STAT"+CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); Status.Items.Add(RdStrm.ReadLine()); // change enabled - disabled button ConnectBtn.Enabled = false; DisconnectBtn.Enabled = true; RetrieveBtn.Enabled = true; // back to normal cursor Cursor.Current = cr; } catch(InvalidOperationException err) { Status.Items.Add("Error: "+err.ToString()); } }
here's the code for when the Disconnect Button is clicked:
private void DisconnectBtn_Click(object sender, System.EventArgs e) { // change cursor into wait cursor Cursor cr = Cursor.Current; Cursor.Current = Cursors.WaitCursor; // Send QUIT command to close session from POP server Data = "QUIT"+CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); Status.Items.Add(RdStrm.ReadLine()); //close connection NetStrm.Close(); RdStrm.Close(); // change enabled - disabled button ConnectBtn.Enabled = true; DisconnectBtn.Enabled = false; RetrieveBtn.Enabled = false; // back to normal cursor Cursor.Current = cr; }
here's code when Retrieve Button clicked:
private void RetrieveBtn_Click(object sender, System.EventArgs e) { // change cursor into wait cursor Cursor cr = Cursor.Current; Cursor.Current = Cursors.WaitCursor; string szTemp; Message.Clear(); try { // retrieve mail with number mail parameter Data = "RETR "+ Number.Text+CRLF; szData = System.Text.Encoding.ASCII.GetBytes(Data.ToCharArray()); NetStrm.Write(szData,0,szData.Length); szTemp = RdStrm.ReadLine(); if(szTemp[0]!='-') { while(szTemp!=".") { Message.Text += szTemp; szTemp = RdStrm.ReadLine(); } } else { Status.Items.Add(szTemp); } // back to normal cursor Cursor.Current = cr; } catch(InvalidOperationException err) { Status.Items.Add("Error: "+err.ToString()); } }
Testing
build and run this project. Set the POP server, user and password. After that you'll get a response message from the POP server (you can see on status box) ie: +OK 2 624 if success or -ERR if fail. The words "+OK 2 624" mean you have two emails and total size 624.now, you can set the mail message number and then click Retrieve button. Then you'll get the mail according to the mail number that you wrote on Mail Number Box.
Reference
MSDN for .NET frameworkRFC 1725
History
20 Jan 2002 - fixed non-critical GUI problemAbout Agus Kurniawan
He gradueted from Sepuluh Nopember Institute of Technology (ITS) in Department of Electrical Engineering, Indonesia. His programming interest is VC++, C#, VB, VB.NET, .NET, VBScript, Delphi, C++ Builder, Assembly, ASP/ASP.NET, and JSP. He's consultant and architect for DMC Server (www.dmcserver.com). He's currently based in Jakarta, Indonesia. Click here to view Agus Kurniawan's online profile. |
相关文章推荐
- 详图解-用C#从POP3服务器取得邮件(提供源代码下载)
- C#利用smtp服务器发送邮件简介
- 如何使用C#访问POP3服务器(转)
- 封装 JMail 4.4 的 POP3 为 .Net 组件 (.dll 程序集),实现 "邮件(附件) 到达" 等 "事件,c#接收邮件
- 运用C#实现POP3邮件接收程序
- c#中邮件收发处理(POP3,IMAP,SMTP)
- c#封装jmail的pop3收邮件
- c#中邮件收发处理(POP3,IMAP,SMTP)
- outlook登陆邮件接收服务器(POP3)失败问题
- python读取pop3服务器邮件并且下载
- c#实现服务器性能监控并发送邮件保存日志
- 如何使用C#访问POP3服务器(英文)
- c#封装jmail的pop3收邮件(转摘)
- python-取pop3服务器的邮件并保成为 .eml 文件
- (转载)用pop3 c#接收邮件
- 使用c#取得未读邮件信息(exchange)
- C#邮件接收系统核心代码(接收POP3邮件IMAP邮件)
- C#验证邮件(获取服务器虚拟路径)
- C#发送邮件时提示:“不允许使用邮箱名称。服务器响应为:”的错误解决办法
- C# 发送邮件到smtp服务器错误:以一种访问权限不允许的方式做了个访问套接字的尝试