65.9K
CodeProject 正在变化。 阅读更多。
Home

使用 C# 的 IMAP 客户端库

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.65/5 (83投票s)

2004 年 8 月 17 日

MPL

2分钟阅读

viewsIcon

1496548

downloadIcon

31931

IMAPLibrary 支持基本的 IMAP 协议功能,用于从邮箱中获取邮件。

GitHub 链接: https://github.com/rohitjoshi/ImapLibrary

 

引言

互联网消息访问协议 (IMAP) 允许客户端访问和操作服务器上的电子邮件消息。它包括创建、删除和重命名邮箱的操作;检查新邮件;永久删除邮件;设置和清除标志; [RFC-822] 和 [MIME-IMB] 解析;搜索;以及选择性地获取消息属性、文本及其部分内容。更多信息:此处

我编写了一个 IMAP 客户端库,它允许基本功能,如登录、选择/检查文件夹、搜索消息、获取消息(标头、正文)、获取存储配额和注销。

这是我用 C# 开发的第一个应用程序,所以不要对效率抱太大期望。它演示了套接字、XML 编写器和用户定义异常处理的用法。请随意修改和使用此代码。

附加的 zip 文件包含三个目录。

IMAP 库:它包含三个源文件。

  • ImapBase.cs:包含与字符串相关的 IMAP 命令,以及与套接字相关的功能。
  • ImapException.cs:定义用户定义的 IMAP 相关错误消息。
  • Imap.cs:IMAP 客户端库函数。 它具有以下公共函数
    • Login:登录到 IMAP 服务器。 它需要 IMAP 主机名、端口、用户名和密码。
      <COMMAND_PREFIX> LOGIN <USERID> <PASSWORD>\r\n
    • Logout:注销并关闭套接字。
      <COMMAND_PREFIX> LOGOUT\r\n
    • SelectFolder:它选择文件夹。 它需要文件夹名称作为参数。
      <COMMAND_PREFIX> SELECT <FOLDER>\r\n
    • ExamineFolder:它类似于 SelectFolder,但它确实进行了检查。
      <COMMAND_PREFIX> EXAMINE <FOLDER>\r\n
    • GetQuota:获取邮箱的配额。
      <COMMAND_PREFIX> GETQUOTAROOT <FOLDER>\r\n
    • SearchMessage:您可以搜索消息。 它将返回消息的 UID。 例如,来自 rjoshi。
      <COMMAND_PREFIX> SEARCH <SEARCH STRING>\r\n
    • FetchMessage:它检索带有附件的完整消息,并写入 XML 文件。 XML 文件将在您的当前目录中生成,文件名为 <MessageUID>.xml。 您需要传递 XmlTextWriter 对象、消息 UID 和标志以获取正文。
      <COMMAND_PREFIX> UID FETCH  <MSG UID> BODY[HEADER]
    • FetchPartBody:获取特定部分的正文。 它需要消息 UID、部分编号作为参数。
    • FetchPartHeader:获取消息的标头。

文档:使用 Visual Studio .NET 生成的 IMAP 库的 HTML 文档。

IMAP 库测试程序:IMAP 测试程序允许用户测试以下功能。

  • 登录
  • 选择/检查文件夹
  • 搜索
  • 获取消息
  • 获取配额
  • Logout
  • 删除消息
  • 将消息标记为未读 
  • 移动消息

   
 

更新: 增加了对以下内容的支持

  1. SSL 连接并已通过 Gmail 验证
  2. 复制消息
  3. 移动消息
  4. 删除消息 
  5. 将消息标记为未读  

如果您喜欢这个库,请不要忘记投票,并在 github 存储库 中欢迎 PR!!

 

 

 

 

© . All rights reserved.