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

.NET Core中如何检查邮件位于收件箱、垃圾箱还是垃圾邮件箱?

在.NET Core中检查邮件所在文件夹(收件箱/垃圾箱/垃圾邮件箱)

你当前的代码是基于MailKit实现SMTP邮件发送,要检查邮件处于哪个文件夹,需要使用IMAP协议(SMTP仅负责发送,无法查询邮件存储位置),同样可以用MailKit的ImapClient来实现。

核心思路

  1. 通过IMAP连接邮件服务器(如Gmail的imap.gmail.com)
  2. 登录目标邮箱账号
  3. 访问对应文件夹(收件箱、垃圾箱、垃圾邮件箱)
  4. 搜索目标邮件并确认其所在文件夹

代码实现示例

以下是基于MailKit的完整示例,以Gmail为例(其他邮箱需调整服务器地址和文件夹名称):

using MailKit;
using MailKit.Net.Imap;
using MailKit.Search;
using MimeKit;

public void CheckEmailFolder()
{
    using var client = new ImapClient();
    // 连接IMAP服务器(Gmail为例)
    client.Connect("imap.gmail.com", 993, true);
    // 登录(若开启2FA需使用应用密码,而非原账号密码)
    client.Authenticate("mohammad.jouhari@gmail.com", "你的应用密码");

    // 定义需要检查的文件夹(Gmail的特殊命名规则)
    var folderNames = new Dictionary<string, string>
    {
        { "收件箱", "Inbox" },
        { "垃圾箱", "[Gmail]/Trash" },
        { "垃圾邮件箱", "[Gmail]/Spam" }
    };

    // 要查找的邮件特征(比如根据主题和发件人)
    var targetSubject = "This is email subject";
    var targetSender = "mohammad.jouhari33@gmail.com";

    foreach (var folderItem in folderNames)
    {
        try
        {
            var folder = client.GetFolder(folderItem.Value);
            folder.Open(FolderAccess.ReadOnly);

            // 搜索符合条件的邮件
            var query = SearchQuery.SubjectContains(targetSubject) 
                        .And(SearchQuery.FromContains(targetSender));
            var uids = folder.Search(query);

            if (uids.Any())
            {
                Console.WriteLine($"目标邮件位于:{folderItem.Key}");
                // 可以进一步获取邮件详情
                var message = folder.GetMessage(uids.First());
                // 处理邮件内容...
            }
        }
        catch (Exception ex)
        {
            Console.WriteLine($"访问{folderItem.Key}失败:{ex.Message}");
        }
    }

    client.Disconnect(true);
}

注意事项

  • 文件夹名称差异:不同邮箱服务商的文件夹命名不同,比如:
    • Outlook/Exchange:垃圾箱是Deleted Items,垃圾邮件箱是Junk Email
    • 网易邮箱:垃圾箱是Trash,垃圾邮件箱是Junk
  • IMAP权限:需在邮箱设置中开启IMAP服务(比如Gmail需在账号设置里启用IMAP)
  • 身份验证:若邮箱开启了两步验证,必须使用应用专用密码登录,而非原密码
  • 邮件匹配:建议用多个特征(如主题、发件人、发送时间)组合搜索,避免匹配到重复邮件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 16:30:58