Как доказать, что письмо покинуло нашу систему с отслеживанием? - PullRequest
0 голосов
/ 24 апреля 2018

У нас есть система, которая отправляет электронные письма из таблицы очередей электронной почты на Sql Server. Он читает набор неотправленных записей из очереди, отправляет их, а затем обновляет их все с отправленной датой.

У нас есть пользователи, которые жалуются на то, что они не получают электронные письма (хотя большинство пользователей получают их просто отлично). Тем не менее, записи отправили даты, установленные на них, что указывает на то, что процесс успешно отправил все электронные письма, прежде чем пометить их как отправленные. Если бы он обнаружил какие-либо ошибки, то записи не отправили бы заполненные даты, так как это последнее, что делается в процессе.

Тем не менее, мне все время отсылают, что "программа не работает!" Поэтому я хочу доказать, что определенные электронные письма вышли. Я включил System.Net и System.Net.Sockets трассировку для .NET Framework. Я отправил тестовое электронное письмо через систему и увидел, что оно зарегистрировано в файле трассировки. Однако в трассировке я не вижу ничего, что фактически показывало бы, ПОЧЕМУ электронное письмо было для него, ничего об адресе получателя, или теле или чем-либо, что я мог видеть

Я надеялся на что-то вроде журнала SMTP, показывающего Message X to recipient Y was successfully handed off to, and accepted by the server on such-and-such date/time., чтобы доказать Да, ваша электронная почта успешно покинула наш сервер; если вы его не получаете, проблема где-то вниз по течению от нас. Но я не вижу этой информации в журнале трассировки.

Есть ли какие-либо переключатели, которые я могу включить для трассировки, которая дала бы этот уровень информации? Или каким-то другим способом я могу пойти по этому поводу?

Сообщения отправляются через клиентскую учетную запись Office 365 с использованием класса .NET SmtpClient.

Вот текущие настройки трассировки, которые у меня есть ...

<system.diagnostics>
    <trace autoflush="true" />
    <sources>
        <source name="System.Net" >
            <listeners>
                <add name="MyTraceFile"/>
            </listeners>
        </source>
        <source name="System.Net.Sockets">
            <listeners>
                <add name="MyTraceFile"/>
            </listeners>
        </source>
    </sources>
    <sharedListeners>
        <add 
            name="MyTraceFile"
            type="System.Diagnostics.TextWriterTraceListener"
            initializeData="F:\Trace\System.Net.trace.log" />
    </sharedListeners>
    <switches>
        <add name="System.Net" value="Verbose" />
        <add name="System.Net.Sockets" value="Verbose" />
    </switches>
</system.diagnostics>

1 Ответ

0 голосов
/ 24 апреля 2018

Если электронное письмо доставлено, и никто не рядом, чтобы услышать его, оно все еще издает звук? ;)

Есть несколько опций трассировки, которые, похоже, вы исследовали. Но не требующий высоких технологий вариант заключается в том, чтобы добавить второго получателя или адрес BCC в почтовый ящик, которым вы управляете, тогда «у вас есть электронная почта прямо здесь». Бонусные баллы, если этот почтовый ящик находится за пределами домена.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...