Как настроить параметры электронной почты в CrashRpt для отправки аварийного дампа?

StackOverflow https://stackoverflow.com/questions/217463

  •  03-07-2019
  •  | 
  •  

Вопрос

После прочтения этого обсуждения и это обсуждение об использовании CrashRpt для создания аварийного дампа и отправки его по электронной почте разработчики, мне было трудно найти какие-либо инструкции / учебные пособия для настройки параметров электронной почты, используемые библиотекой для отправки электронной почты.

Когда вы вызываете функцию install () для инициализации CrashRpt, вы указываете адрес электронной почты, на который вы хотите отправить аварийный дамп, но как библиотека CrashPrt узнает, как отправить электронное письмо на этот адрес? Разве библиотека не должна знать настройки почтового клиента для каждого отдельного пользователя?

Когда в моем коде происходит фатальный сбой, появляется диалоговое окно CrashRpt, и когда я ввожу свой адрес электронной почты и нажимаю кнопку отправки, я перехожу к " Сохранить файл " диалоговое окно, в котором я могу сохранить сжатый пакет, а учетная запись, указанная в функции Install (), никогда не получает электронное письмо.

Заранее спасибо за любую помощь! Я явно что-то упускаю.

Это было полезно?

Решение

Что CrashRpt делает для отправки по электронной почте:

Система электронной почты просто использует MAPI для отправки вашей электронной почты. Который попытался бы использовать ваш почтовый клиент по умолчанию, если он у вас есть, и если он поддерживает MAPI. Посмотрите на MailMsg.cpp для деталей.

Личный опыт:

При использовании CrashRpt моей компанией мы немного изменили его, чтобы вызвать созданный нами веб-сервис, который представляет отчет о сбое. Таким образом, мы полностью удалили код электронной почты из CrashRpt. И вместо этого в нашей системе отслеживания ошибок есть раздел для сбоев, которые автоматически отправляются при возникновении сбоев.

Чтобы найти свою проблему:

Возможно, я бы попытался отладить код CrashRpt, чтобы понять, почему он дает вам диалог сохранения. Вместо этого он должен просто открыть почтовый клиент по умолчанию. Возможно, у вас более старая версия библиотеки, или, возможно, ресурсы диалога немного запутаны. Отладка кода покажет вам это.

Скорее всего, MailReport вызывается, но не работает.

Установите точку останова в оригинальном коде CrashRpt CrashHandler.cpp сразу после DoModal:

 mainDlg.m_pUDFiles = &m_files;
   if (IDOK == mainDlg.DoModal())
   {
      //Put breakpoint here <---------
      if (m_sTo.IsEmpty() || 
          !MailReport(rpt, sTempFileName, mainDlg.m_sEmail, mainDlg.m_sDescription))
      {
         SaveReport(rpt, sTempFileName);
      }
   }

Проверьте, почему MailReport не вызывается. Это либо ресурс диалога, либо ваш m_sTo не заполнен, либо вы можете пройтись по MailMsg.cpp и посмотреть, где происходит сбой MAPI.

Альтернативное решение:

Если вы обнаружите выше, что MailReport вызывается, но не удается, легко исправить это просто вместо этого выполнить ShellExecute и указать mailto:

Вы можете даже попытаться использовать метод MAPI, но если это не удастся сделать mailto:

Другие советы

Вы можете найти документацию по CrashRpt, FAQ и загрузить новый CrashRpt v1.1 здесь http: / /code.google.com/p/crashrpt/

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top