Szukam sposobu na sprawdzenie, czy konkretne wiadomości e-mail w kolejce za pomocą sp_send_dbmail
są pomyślnie przesłane z naszego serwera Exchange. Przyjrzałem się tabelom systemowym msdb.dbo.sysmail_mailitems
i msdb.dbo.sysmail_log
. msdb.dbo.sysmail_log
wydaje się być bardziej pomocny z tych dwóch; konkretnie, jego kolumna description
. Z badań przeprowadzonych mam tak daleko, jak się wydaje, gdy wystąpi błąd, pojawi się komunikat w następującym formacie w kolumnie description
:Sprawdź, czy sp_send_dbmail zakończyło się pomyślnie
wiadomość nie mogła zostać wysłana do odbiorców ze względu na serwerze pocztowym niepowodzenie. (Wysyłanie wiadomości e-mail przy użyciu konta 3 (2012-11-01T11: 28: 04) Wiadomość wyjątku: Nie można wysyłać wiadomości e-mail na serwer pocztowy. (Skrzynka pocztowa jest niedostępna Odpowiedź serwera: 5.7.1 Nie można przekazać dla wiadomości thisemail @ email .com).)
Jest to dołączone do innych wierszy, które mają ten sam process_id
. Opis do ewidencji załączając są
proces DatabaseMail rozpoczyna
i
proces DatabaseMail jest zamykany
Jeśli e-mail została wysłana, te same 2 rzędy są zapisywane w tabeli, z wyjątkiem bez zamkniętych rzędów między nimi.
Więc jeśli mam udane send dodaje pojawi się w tabeli
i jeśli mam awarię wysyłać zapisy w logu to
Are tam inne przypadki rejestrowania wpisów, jeśli wysłanie się nie powiodło lub czy wysłanie się powiodło? Na przykład, czy jest możliwe, że istnieją 4 wiersze wpisów dla wysyłania (2 załączające stwierdzenie, kiedy zostało uruchomione i kiedy zostało zamknięte, i 2 załączone, stwierdzające, że wiadomość e-mail została wysłana pomyślnie). Nie znalazłem żadnych zapisów dziennika, które odbiegały od wzorca powyżej, ale chciałbym mieć pewność, zanim napiszę logikę na podstawie tego założenia.
Było dokładnie to, czego szukałem. Dzięki –