gpt4 book ai didi

c# - 使用 C# 处理电子邮件失败

转载 作者:行者123 更新时间:2023-11-30 22:32:44 24 4
gpt4 key购买 nike

我希望使用 C# 连接到电子邮件帐户并处理未送达的邮件或失败的邮件。我希望将失败的地址或原始电子邮件写入文本文件。

我确信我能弄清楚如何识别失败的消息。示例:WHERE 主题包含“失败”、“返回”等。

我不知道如何从电子邮件中收集失败的地址。

我曾经为客户使用一个名为 popmonger 的程序,但现在它收集了错误的电子邮件地址。它正在收集 mailer-daemon@gateway03.websitewelcome.com 作为示例,而不是原始或失败的电子邮件。我认为如果我编写 C# 服务可能会更容易。

我要连接的电子邮件帐户位于 hostgator。有人知道从哪里开始吗?

谢谢,

jack

最佳答案

由于正在使用的邮件客户端称为 popmonger,听起来您将处理 POP3 协议(protocol),尽管 .Net 提供了一种通过 SMTP 轻松发送电子邮件的方法,但它在检查电子邮件时并没有真正做到同样的公正。

您必须使用具有 POP3 客户端的第 3 方 DLL 来检索电子邮件。最重要的是,您需要检查其中一封失败的电子邮件通知,以了解您的应用程序所期望的内容。主题、正文、发件人地址等应该有一些共同之处,以提示哪些电子邮件是失败通知。然后您需要查看它在电子邮件正文中的哪个位置指定了您需要检索以写入文本文件的错误信息。基本上你的步骤应该是这样的:

  • 检查和检索电子邮件
  • 将每个失败的电子邮件对象添加到一个集合中(List<T> 效果很好)
  • 阅读/解析每封电子邮件以提取您需要的信息
  • 将提取的数据写入文件
  • 只要一切顺利并且您没有任何异常,请使用您的 POP 客户端对象从 POP 服务器中删除电子邮件(这样您就不会每次都读取相同的失败通知并用冗余数据填充您的文本文件)

我使用了来自 this 的 POP3 类codeproject 文章,它确实包含附件代码,但我从不将它用于附件,因为它们有点问题。对于阅读电子邮件正文文本,它还没有让我失望(敲木头)。

收到失败通知后,您可以使用简单的正则表达式模式按照规定的格式提取失败地址并进行匹配。假设正文文本已从服务器检索到,并且您将其存储在名为 bodyText 的字符串中

using System.Text.RegularExpressions;
// ...

string failedAddressPattern = @"The mail system <(?<address>.+)>";
string capturedAddress = null;
Match match = Regex.Match(bodyText, failedAddressPattern, RegexOptions.IgnoreCase);

if(match.Groups["address"].Success)
{
capturedAddress = match.Groups["address"].Value.Trim();
}

if(capturedAddress == null)
{
// do some form of debug logging here because the pattern no longer works, etc.
}

关于c# - 使用 C# 处理电子邮件失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8608822/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com