Pergunta

Estou trabalhando em um aplicativo Windows Forms (.NET 3.5) que possui um manipulador de exceções integrado para capturar quaisquer exceções (Deus me livre) que possam surgir.Gostaria que o manipulador de exceções pudesse solicitar ao usuário que clicasse em um Enviar relatório de erro botão, o que faria com que o aplicativo enviasse um e-mail para meu endereço de e-mail do FogBugz.

Qual é a melhor maneira de fazer isso e há alguma "pegadinha" a ser observada?

Foi útil?

Solução

Você desejará usar a classe SmtpClient conforme descrito aqui.
Não há pegadinhas - enviar e-mail é o mais fácil possível.

Outras dicas

Você não precisa se preocupar com as credenciais do cliente e apenas usar o SmtpClient conforme sugerido por Esteban.Você precisará que o usuário forneça um URL de servidor Smtp válido na configuração, mas a maioria dos ISPs permite smtp anônimo, desde que você esteja em sua rede (um de seus clientes) - desde que o usuário insira o URL do servidor smptp de seu ISP, então a maioria as pessoas não teriam problemas.

Observação:Há uma seção predefinida do arquivo .config para armazenar as opções de configuração do objeto SmtpClient.Se você colocar as configurações lá, não precisará definir nada explicitamente em seu código ao enviar um email.Um exemplo da seção está abaixo:

<system.net>
   <mailSettings>
      <smtp deliveryMethod="Network" from="stuff@somewhere.com.au">
         <network host="smtp.somewhere.com.au" />
      </smtp>
   </mailSettings>
</system.net>

O nome de usuário e a senha são opcionais.O Intellisense funciona para essas partes do arquivo de configuração.

Editar:ligeira correção no meu exemplo de código.

Em um ambiente controlado, usar SmtpClient seria a resposta.Mas na máquina de um usuário você precisaria de um servidor SMTP para enviar.

Você poderia solicitar ao usuário suas credenciais SMTP, mas acho que isso seria impraticável para o seu caso.Como usuário, eu não gostaria de fornecer minhas credenciais SMTP para um aplicativo aleatório (pense em SPAM).Você também não deseja codificar suas próprias credenciais SMTP no aplicativo; seria trivial para um usuário mal-intencionado farejar essas credenciais e usar seu servidor para enviar SPAM.

Idealmente, você poderia usar o agente de correio do usuário para enviar o email.Eu estava pensando que você poderia formular e executar um mailto:URL, mas não tenho certeza se você conseguiria especificar o corpo ou qualquer anexo da mensagem.

Você mencionou que está usando o Fogbugz.

Tentar http://www.fogcreek.com/FogBugz/docs/60/topics/customers/BugzScout.html?isl=59722ou http://www.fogcreek.com/FogBugz/blog/post/C-wrapper-for-the-FogBugz-API.aspx?isl=59722

Há algum código de exemplo por aí, acho que no diretório de instalação do FB.Verifiquei com Michael Pryor sobre:licenciamento e ele disse que não havia problema em usar o código deles, mas YMMV, então eu verificaria.

Ele fornece um bom ponto de partida.

Você também pode querer verificar o terceiro aspNetE-mail biblioteca, que tem muitos recursos úteis para oferecer além do que System.Net.Mail oferece.

Você desejará usar a classe SmtpClient conforme descrito aqui.Não há pegadinhas - enviar e-mail é o mais fácil possível.

Um extenso Perguntas frequentes sobre System.Net.Mail está localizado aqui.

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