Como você configurar as definições de e-mail em CrashRpt para enviar o despejo de memória?
-
03-07-2019 - |
Pergunta
Depois de ler esta discussão esta discussão sobre o uso CrashRpt para gerar um despejo de memória e enviá-lo para os desenvolvedores, eu tenho tido um tempo difícil encontrar quaisquer instruções / tutoriais para configurar as definições de e-mail usados ??pela biblioteca para enviar o e-mail.
Quando você chamar a função de instalação () para inicializar CrashRpt, você especificar o endereço de e-mail que você deseja que o despejo de memória enviada para, mas como é que a biblioteca CrashPrt saber como enviar o e-mail para esse endereço? a biblioteca não teria que saber as configurações do cliente de e-mail para cada usuário individual?
Quando um acidente fatal ocorre no meu código, a caixa de diálogo CrashRpt aparece e quando eu entrar no meu endereço de e-mail e clique no botão enviar, leva-me a uma caixa de diálogo "Save File" onde eu possa salvar o pacote compactado e a conta especificada na função Instalar () nunca recebe um e-mail.
Agradecemos antecipadamente para toda e qualquer ajuda! Estou claramente faltando alguma coisa.
Solução
O que CrashRpt faz para e-mail:
O sistema de e-mail simplesmente usa MAPI para enviar o seu e-mail. Que poderiam tentar usar seu cliente de email padrão, se você tiver um, e se ele suporta MAPI. Dê uma olhada em MailMsg.cpp para mais detalhes.
A experiência pessoal:
No uso da minha empresa de CrashRpt, modificamos um pouco apesar de chamar um serviço web que criamos que submete o relatório do acidente. Então, nós eviscerado o código de e-mail completamente de CrashRpt. E, em vez temos em nosso sistema de rastreamento de bugs uma seção para acidentes que eram auto submetido quando acidentes acontecem.
Para encontrar o seu problema:
Eu gostaria talvez tentar depurar o código CrashRpt para ver por que ele está dando-lhe uma poupança de diálogo. Deve ao invés de apenas abrir o seu cliente de email padrão. Talvez você tenha uma versão mais antiga da biblioteca, ou talvez os recursos de diálogo são um pouco confuso. Depuração do código irá dizer-lhe isso embora.
A maioria MailReport provavelmente está sendo chamado, mas está falhando.
Definir um ponto de interrupção no href="http://code.google.com/p/crashrpt/" rel="nofollow noreferrer"> CrashRpt código 's CrashHandler.cpp originais
Verifique para ver por que MailReport não está sendo chamado. É tanto o recurso de diálogo, ou o seu m_sTo não foi preenchido ou você pode percorrer MailMsg.cpp e ver onde MAPI está falhando. Solução alternativa: Um reparo fácil, se você achar acima disso MailReport está sendo chamado, mas não ter sucesso, é a vez basta fazer uma ShellExecute e especifique um mailto: Você pode até tentar usar o método MAPI, mas se isso falhar para fazer um mailto: 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);
}
}
Outras dicas
Você pode encontrar a documentação CrashRpt, FAQ e baixar uma nova v1.1 CrashRpt aqui http: / /code.google.com/p/crashrpt/