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

使用AE.Net IMAP保存邮件附件失败,求指导解决方法

解决AE.Net.Mail保存IMAP邮件附件无效的问题

直接针对你的代码问题给出修正方案:

核心问题排查与修复

  • 目标目录未创建:你的代码未检查目标文件夹是否存在,Save方法不会自动创建目录,导致无报错但无法写入文件。
  • 保存路径拼接错误:当前代码把文件夹名当成了文件名前缀,导致附件被错误命名且未存入指定文件夹。
  • 未拉取完整邮件内容:默认调用GetMessages可能仅获取邮件头部,需指定参数确保拉取包含附件的完整数据。

修改后的完整代码

using System.IO;
using AE.Net.Mail;

var targetFolder = @"D:\test\savedattachementsfromYandexIMAP";
// 确保目标文件夹存在
if (!Directory.Exists(targetFolder))
{
    Directory.CreateDirectory(targetFolder);
}

// 使用using确保IMAP连接正确释放
using (var imapClient = new ImapClient("imap.yandex.com", "username", "password", AuthMethods.Login, 993, true))
{
    imapClient.SelectMailbox("INBOX");
    Console.WriteLine($"收件箱邮件总数: {imapClient.GetMessageCount()}");
    
    // 指定FetchOptions.Full拉取完整邮件(含附件)
    var messages = imapClient.GetMessages(0, 10, fetchOptions: FetchOptions.Full);
    
    foreach (var msg in messages)
    {
        Console.WriteLine($"处理邮件: {msg.Subject}");
        foreach (var att in msg.Attachments)
        {
            var savePath = Path.Combine(targetFolder, att.Filename);
            att.Save(savePath);
            Console.WriteLine($"已保存附件: {savePath}");
        }
    }
}

额外注意事项

  • Yandex邮箱需提前开启IMAP服务,若开启两步验证,需使用应用专用密码替代原密码登录。
  • 新增控制台输出可直观确认附件保存状态,方便排查路径或权限问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 13:10:56