首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在C#中处理来自Exchange Server的NDR电子邮件?

如何在C#中处理来自Exchange Server的NDR电子邮件?
EN

Stack Overflow用户
提问于 2019-07-11 12:12:35
回答 1查看 205关注 0票数 0

目前,我的应用程序有能力处理传入的电子邮件,如果它与代码中给定的标准不匹配,则会退回。但是,我想添加另一种类型的电子邮件进行处理,这些电子邮件是来自Microsoft Exchange Server的NDR“未送达报告”。因此我应用程序不会响应/退回到exchange服务器的NDR,这会导致我的邮箱和Exchange Server之间的循环。下面的方法在无效时触发

代码语言:javascript
复制
private static void ProcessInvidMsgWithoutNo(string sMsgFrom, string sFromEmail, EmailMsg sMsgReceived, EmailMessage message)
    {
        EmailMsg.MoveToInvalid(message);

        sMsgReceived.IsValid = false;
        SaveMsgReceived(sMsgReceived, 0, string.Empty);

        if (!sFromEmail.Equals(string.Empty))
        {
            ResponseForInvidMsg(sFromEmail);
        }
        else
        {
            curLog.WriteLog(string.Format(CultureInfo.CurrentCulture, MsgEMChecker27, sMsgFrom));
        }
    }

下面的方法触发响应传入的无效消息,如上所述。

代码语言:javascript
复制
private static void ResponseForInvidMsg(string sFromEmail)
    {
        string tErrSubjectMsg = String.Format(CultureInfo.CurrentCulture, "{0}\\Resource\\MsgErrorSubjectAck.html", Entity.GetSetting("DocRootDir"));

        StringBuilder htmlText = new StringBuilder();
        FileStream fsFile = new FileStream(tErrSubjectMsg, FileMode.Open);

        if (fsFile != null)
        {
            StreamReader reader = new StreamReader(fsFile, Encoding.Default);

            string text;
            do
            {
                text = reader.ReadLine();
                if ((text != null) && (text != ""))
                    htmlText.Append(text + "\n");
            } while (text != null);

            reader.Close();
            fsFile.Close();
            fsFile = null;
        }
        else
            htmlText.Append("hello");

        string tToCustomerSubject = ReplyForInvalid;
        string tMessage = htmlText.ToString();

        EmailMsg emTo = new EmailMsg(string.Empty, sFromEmail, tToCustomerSubject, tMessage);
        emTo.MsgType = EmailMsg.TypeSentCustomer;
        emTo.Send(false); //Not save but CC to generic email box
    }

请帮助我找到一种停止代码以响应Exchange Server NDR的方法。谢谢

EN

回答 1

Stack Overflow用户

发布于 2019-07-12 08:10:01

开始的地方应该是检查消息的ItemClass请参见https://docs.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-asemail/51d84da6-a2da-41e9-8ca7-eb6c4e72c28d。NDR、交付报告等应以报告为前缀,例如

代码语言:javascript
复制
REPORT.IPM.NOTE.NDR Non-delivery report for a standard message.
REPORT.IPM.NOTE.DR Delivery receipt for a standard message.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56981532

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档