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

如何通过C#的MimeKit包区分.eml文件中的已发送/接收邮件?

如何通过MimeKit的MimeMessage区分已发送/已接收邮件

.eml文件本身没有内置的“已发送/已接收”状态标记,需要通过邮件头字段、收发件人角色来推断,以下是几种可靠的判断方式:

1. 基于目标邮箱的收发角色判断

如果你的程序针对特定邮箱账户处理邮件,可以通过目标邮箱在邮件中的角色区分:

  • 已发送邮件:目标邮箱出现在From(发件人)或Sender(实际发送人,适配代理发送场景)列表中
  • 已接收邮件:目标邮箱出现在To(收件人)、Cc(抄送)或Bcc(密送)列表中

代码示例:

// 传入目标邮箱地址与MimeMessage对象
private static bool IsSentMessage(MimeMessage message, string targetEmail)
{
    // 检查发件人是否包含目标邮箱
    if (message.From.Any(addr => addr.Address.Equals(targetEmail, StringComparison.OrdinalIgnoreCase)))
        return true;
    
    // 检查代理发送场景下的实际发送人
    if (message.Sender != null && message.Sender.Address.Equals(targetEmail, StringComparison.OrdinalIgnoreCase))
        return true;
    
    // 检查是否属于收件方,是则为已接收邮件
    var recipientAddresses = message.To.Concat(message.Cc).Concat(message.Bcc)
        .Where(addr => addr != null)
        .Select(addr => addr.Address);
    
    return !recipientAddresses.Any(addr => addr.Equals(targetEmail, StringComparison.OrdinalIgnoreCase));
}

2. 利用邮件客户端自定义头字段

部分邮件客户端会添加专属头字段标记邮件状态,常见的有:

  • Outlook/Exchange:已发送邮件通常携带X-MS-Exchange-Organization-AuthAs: Sender头字段
  • Thunderbird:已发送邮件的X-Mozilla-Status字段会包含特定值(如0x00010000)
  • 通用场景:Return-Path字段若与发件人地址一致,大概率是已发送邮件(已接收邮件的Return-Path通常为发件方邮箱)

示例代码(通过Return-Path判断):

private static bool IsSentByReturnPath(MimeMessage message)
{
    var returnPath = message.ReturnPath?.Address;
    var senderAddress = message.From.FirstOrDefault()?.Address ?? message.Sender?.Address;
    
    if (string.IsNullOrEmpty(returnPath) || string.IsNullOrEmpty(senderAddress))
        return false;
    
    return returnPath.Equals(senderAddress, StringComparison.OrdinalIgnoreCase);
}

3. 辅助判断:回复/引用关系

已发送邮件如果是回复他人的,In-Reply-To或References字段会包含原始邮件的Message-ID,但该方式仅作为辅助依据,不能单独判断(已接收邮件也可能是回复你的邮件)。

注意事项

  • 没有100%通用的判断逻辑,不同邮件客户端/服务器的头字段差异较大,建议结合多种方式提升准确率
  • 若处理本地导出的.eml文件(如从Outlook的“已发送邮件”或“收件箱”导出),可结合文件所在文件夹路径辅助判断(如果路径信息可用)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 08:45:39