You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用MimeKit读取邮件:dotnet添加MimeKit包失败及使用经验咨询

问题1:如何成功获取MimeKit.dll及相关依赖

dotnet add package 命令需要依托.NET项目文件才能执行,你可以通过以下步骤获取目标DLL:

  • 打开PowerShell,切换到你打算存放DLL的目录(比如c:\temp\imap)
  • 执行命令创建临时控制台项目:dotnet new console
  • 添加MimeKit包:dotnet add package MimeKit --version 4.9.0
  • 还原依赖:dotnet restore
  • 从项目的bin\Debug\net[对应版本]目录中找到MimeKit.dll、MailKit.dll以及BouncyCastle.Crypto.dll
  • 把这些DLL拷贝到你的目标目录后,即可删除这个临时项目

问题2:MimeKit/MailKit在PowerShell中的使用经验

  • 版本匹配很重要:MimeKit和MailKit要使用同大版本(比如你用MimeKit 4.9.0,MailKit最好也选4.x系列),避免兼容问题
  • IMAP连接注意事项:主流邮箱的IMAP端口多为993,连接时需指定SSL加密,用SecureSocketOptions.SslOnConnect参数
  • 基础使用流程示例:
    # 导入DLL
    Add-Type -Path "c:\temp\imap\BouncyCastle.Crypto.dll"
    Add-Type -Path "c:\temp\imap\MimeKit.dll"
    Add-Type -Path "c:\temp\imap\MailKit.dll"
    
    # 创建IMAP客户端并连接
    $client = New-Object MailKit.Net.Imap.ImapClient
    $client.Connect("imap.example.com", 993, [MailKit.Security.SecureSocketOptions]::SslOnConnect)
    # 两步验证邮箱需用应用专用密码
    $client.Authenticate("你的邮箱地址", "密码/应用专用密码")
    
    # 打开收件箱并读取邮件
    $inbox = $client.Inbox
    $inbox.Open([MailKit.FolderAccess]::ReadOnly)
    # 读取最新5封邮件
    for ($i = [Math]::Max(0, $inbox.Count - 5); $i -lt $inbox.Count; $i++) {
        $msg = $inbox.GetMessage($i)
        Write-Host "主题: $($msg.Subject)"
        Write-Host "发件人: $($msg.From)"
        # 按需读取纯文本或HTML正文
        if ($msg.TextBody) { Write-Host "正文: $($msg.TextBody)`n" }
    }
    
    # 清理资源
    $client.Disconnect($true)
    $client.Dispose()
    
  • 额外提示:处理带大附件的邮件时,建议用流式读取方式减少内存占用;记得捕获连接超时、认证失败等异常。

内容的提问来源于stack exchange,提问作者Jocken

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.15 05:12:37