Como você configurar as definições de e-mail em CrashRpt para enviar o despejo de memória?

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

  •  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.

Foi útil?

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

 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);
      }
   }

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:

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top