Мы отправляем много сообщений электронной почты из нашего приложения Siebel 7.8, и мы хотели бы определить, были ли они успешно доставлены или нет.Как проверить, успешно ли Siebel отправил электронное письмо?
According to the Bookshelf, если SMTP-сервер выключен, диспетчер исходящих сообщений связи пытается отправить сообщение позже, так что это не проблема. Тем не менее, есть еще много вопросов, которые могут вызвать по электронной почте не может быть доставлен, например, опечатка в адресе, приемник достигнув хранения квоты и т.д.
Мы посылаем наши сообщения таким образом:
var ps = TheApplication().NewPropertySet();
ps.SetProperty("ActivityId", outboundEmailActivityId);
ps.SetProperty("CommProfile", commProfile);
ps.SetProperty("ProcessMode", "Local");
var bs = TheApplication().GetService("Outbound Communications Manager");
bs.InvokeMethod("SendMessage", ps, psOut);
Использование ProcessMode = Local
позволяет нам обнаружить ошибки. Например, если мы попытаемся отправить сообщение несуществующей учетной записи в том же домене нашего SMTP-сервера, он возвращает 550 Unknown user
, а затем 503 Must have sender and recipient first
. Outbound Communications Manager создает исключение, и мы его захватываем и обрабатываем.
Однако, если мы отправляем сообщение несуществующей учетной записи в другом домене, наш SMTP-сервер не может знать, что он сбой, и поэтому он возвращает 250 Queued
, и наш код успешно завершен. Позже (он может варьироваться от нескольких секунд до нескольких часов), мы получим сообщение об ошибке «Сообщение невозможен», но на данный момент мы знаем только, что исходящее сообщение не удалось, мы не знаем, какой из них.
Есть ли способ, с помощью которого Siebel может обрабатывать эти сообщения «Недостающие сообщения» автоматически?
Мы думаем написать собственный процесс для этого, но это кажется огромной задачей: нам нужно будет разобрать уведомление о неудаче доставки, идентифицировать неудавшегося получателя, найти все последние сообщения, отправленные на этот адрес , и каким-то образом угадайте, какой из них был неудачен (на основе Идентификатора сообщения, если нам повезет, и мы можем прочитать его в Siebel или в теме в противном случае).