Kamalllll Ответов: 1

Как процесс о недоставке писем из Exchange Server в C#?


В настоящее время мое приложение имеет возможность обрабатывать входящие электронные письма и отскакивать обратно, если оно не соответствует заданным критериям в коде. Однако я хочу добавить еще один тип электронной почты для обработки, который является NDR "отчетами о недоставке" с Microsoft Exchange Server. Таким образом, мое приложение не отвечает/не возвращает NDR на сервер exchange, что вызывает цикл между моим почтовым ящиком и сервером Exchange. Следующий метод срабатывает, когда Invalid не имеет определенного значения

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));
        }
    }


Следующий метод срабатывает для ответа на входящее недопустимое сообщение, как указано выше.

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
    }


Что я уже пробовал:

Я попытался заглянуть в report.ipm.note.ndr, но не уверен, как он встроен в мой текущий код. Есть ли какой-то способ, чтобы мой код не отвечал на NDR Exchange Server, а мог только получать их? Спасибо

1 Ответов

Рейтинг:
0

Maciej Los

Проверить это: Анализ отчета о недоставке (NDR) в C#[^]