Come si configurano le impostazioni e-mail in CrashRpt per inviare il dump dell'arresto anomalo?

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

  •  03-07-2019
  •  | 
  •  

Domanda

Dopo aver letto questa discussione e questa discussione sull'uso di CrashRpt per generare un dump di arresto anomalo e inviarlo via email a gli sviluppatori, ho avuto difficoltà a trovare istruzioni / tutorial per configurare le impostazioni e-mail utilizzate dalla libreria per inviare l'e-mail.

Quando si chiama la funzione install () per inizializzare CrashRpt, si specifica l'indirizzo e-mail a cui si desidera inviare il dump dell'arresto anomalo, ma come fa la libreria CrashPrt a sapere come inviare l'e-mail a quell'indirizzo? La biblioteca non dovrebbe conoscere le impostazioni del client di posta elettronica per ogni singolo utente?

Quando si verifica un arresto irreversibile nel mio codice, viene visualizzata la finestra di dialogo CrashRpt e quando inserisco il mio indirizzo e-mail e faccio clic sul pulsante Invia, mi porta a un " Salva file " finestra di dialogo in cui posso salvare il pacchetto zippato e l'account specificato nella funzione Install () non riceve mai un'e-mail.

Grazie in anticipo per qualsiasi aiuto! Mi manca chiaramente qualcosa.

È stato utile?

Soluzione

Cosa fa CrashRpt per l'invio tramite e-mail:

Il sistema di posta elettronica utilizza semplicemente MAPI per inviare la tua email. Che tenterebbe di utilizzare il client di posta predefinito se ne hai uno e se supporta MAPI. Dai un'occhiata a MailMsg.cpp per i dettagli.

Esperienza personale:

Nell'uso di CrashRpt da parte della mia azienda, l'abbiamo modificato un po 'per chiamare un servizio Web creato che invia il rapporto di arresto anomalo. Quindi abbiamo sventrato completamente il codice e-mail da CrashRpt. E invece abbiamo nel nostro sistema di tracciamento dei bug una sezione per gli incidenti che sono stati inviati automaticamente quando si verificano gli incidenti.

Per trovare il tuo problema:

Forse proverei a eseguire il debug del codice CrashRpt per vedere perché ti sta dando una finestra di dialogo di salvataggio. Dovrebbe invece semplicemente aprire il client di posta predefinito. Forse hai una versione precedente della libreria o forse le risorse della finestra di dialogo sono un po 'incasinate. Il debug del codice ti dirà questo però.

Molto probabilmente MailReport viene chiamato ma non riesce.

Imposta un punto di interruzione nell'originale codice CrashRpt di CrashHandler.cpp subito dopo il 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);
      }
   }

Verifica perché MailReport non viene chiamato. O è la risorsa della finestra di dialogo o il tuo m_sTo non è pieno oppure puoi passare attraverso MailMsg.cpp e vedere dove MAPI non sta funzionando.

Soluzione alternativa:

Una soluzione semplice, se trovi sopra che MailReport viene chiamato, ma non ci riesce, è invece fare semplicemente ShellExecute e specificare un mailto:

Potresti anche provare a usare il metodo MAPI, ma se ciò non riesce a fare un mailto:

Altri suggerimenti

Puoi trovare la documentazione di CrashRpt, le FAQ e scaricare un nuovo CrashRpt v1.1 qui http: / /code.google.com/p/crashrpt/

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top