如何代表客户发送电子邮件时处理退回电子邮件

时间:2014-01-26 20:30:41

标签: c# email smtp email-bounces

我需要有关处理/跟踪退回电子邮件的建议。 我们有一个场景,我们需要代表客户向收件人发送电子邮件。 假设我们需要发送电子邮件至user@recipient.com,发送电子邮件至emailer@cusotmer.com但是当此电子邮件失败时,我们需要在mybouncetracker@mydomain.com上收到退回/失败通知

我尝试使用reply-to / return-path但两者都被emailer@cusotmer.com取代。 由于我们没有收到emailer@cusotmer.com的收件箱,我们无法处理退回邮件。

请帮助!! ..

我们在C#.net上创建了smtp客户端

1 个答案:

答案 0 :(得分:1)

请注意,由于邮件服务器返回的退回邮件因服务器而异,我们无法依赖回复标头或在我们原始邮件的标头中插入自定义ID。他们中的许多人只是简单地反复说明了如果没有包含原始信息就交付失败。

我的建议是使用Regex和编译选项(性能)来扫描消息。

阅读完邮件内容后,您可以使用以下代码将邮件归类为软弹回,表明邮件发送失败:

string pattern = "failed after \S+ sent[\s\n]the[\s\n]message";
Regex regexPattern = new Regex(pattern, RegexOptions.Compiled);

if (regexPattern.Match(myMessage.BodyHtml))
{
    Console.WriteLine("This is a soft bounce");
}

您可以添加更多模式以对更多消息进行分类。