首页 > 解决方案 > 如何在 EWS/C# 中使用抑制自动回复发送电子邮件?

问题描述

我一直试图在 MSDN 文档和各种其他资源中找到这个问题的答案,但我找不到有用的东西。

这是我正在使用的一些 C# 代码:

private ExtendedPropertyDefinition SurpressAutoResponse = new ExtendedPropertyDefinition(
    DefaultExtendedPropertySet.InternetHeaders, 
    "X-Auto-Response-Suppress", 
    MapiPropertyType.String);  // Also tried with StringArray and Integer

private ExtendedPropertyDefinition OtherID = new ExtendedPropertyDefinition(
    DefaultExtendedPropertySet.InternetHeaders, 
    "X-Custom-ID-Property-Example", 
    MapiPropertyType.String);

{ 其他一些不重要的代码}

var mm = new EmailMessage(Global.Exchange);
mm.ToRecipients.Add("me@me.com");  // example address, of course
mm.Subject = Subject.Replace('\r', ' ').Replace('\n', ' ');
mm.SetExtendedProperty(SurpressAutoResponse, "OOF, NDR");   // Also tried {"OOF", "NDR"} and -1     
mm.SetExtendedProperty(OtherId, "12345-1");
mm.Body = "Hello World";
mm.Send();

当我检查传入电子邮件的标题时,我看到我的“OtherId”设置正确,但未设置 X-Auto-Response-Suppress。任何想法我应该如何进行交流以抑制这些不在办公室和交付失败的报告?

笔记:

参考:

更新

我决定尝试测试电子邮件的行为并在我的电子邮件帐户上设置自动回复/OOF。即使电子邮件的属性不包含 X-Auto-Response-Suppress 标头,我注意到它确实阻止了回复。我的假设是在 Exchange 服务器上读取标头,它也可能处理自动响应而不是客户端。由于客户端不会对标头本身进行操作,因此 Exchange 通过在传输之前将其从原始电子邮件中删除来保存一些数据。有谁知道请确认这是正确的吗?

标签: c#emailexchange-serverexchangewebservicesexchange-server-2010

解决方案


我之前在使用该标头时遇到过问题,因为 MSDN 对它的实际作用非常模糊。而且它主要仅用于交换服务器和 OOF 目的。相反,还有其他更好的标题。这是一篇文章,解释了为什么我认为使用其他标题会很好地为您服务。https://www.jitbit.com/maxblog/18-detecting-outlook-autoreplyout-of-office-emails-and-x-auto-response-suppress-header/

如果您只想捕获 OOF,则可以将标题更改为:

X-Auto-Response-Suppress:OOF

但我不认为这是一个很好的例子。这是关于为什么这并不总是最好使用的标题的另一个线程:检测 Outlook 自动回复/外出电子邮件


推荐阅读