Как процесс о недоставке писем из 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, а мог только получать их? Спасибо