Как настроить параметры электронной почты в CrashRpt для отправки аварийного дампа? - PullRequest
1 голос
/ 20 октября 2008

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 20 октября 2008

Что 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:

1 голос
/ 07 августа 2009

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

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