Pergunta

Gostaria que meu programa pudesse me enviar relatórios de erros por e-mail.Como posso fazer isso sem codificar um nome de usuário/senha/servidor SMTP/etc.no código?(Isso permitiria aos usuários descompilar o programa e assumir o controle desta conta de e-mail.)

Disseram-me que você poderia fazer algumas coisas com o telnet para a porta 25, mas estou muito confuso quanto aos detalhes.A maioria dos trechos de código no Google pressupõe que você tenha uma conta pré-existente, o que não funciona nesta situação.

Estou usando o .NET v3.5 (C# em particular), mas imagino que as ideias sejam bastante semelhantes na maioria dos idiomas.Contanto que você perceba que estou fazendo isso para um aplicativo offline e não me forneça código PHP ou algo assim, ficaremos bem.

Foi útil?

Solução

Desde que sua conta esteja em gmail.com, configure gmail-smtp-in.l.google.com como o servidor SMTP de saída em seu programa.Você não precisa fornecer uma senha para enviar e-mail para contas do Gmail ao usar esse servidor.

Outras dicas

Eu criaria um webservice para me conectar.Este webservice deve enviar o email com base nos dados fornecidos pelo seu programa.Todos os dados de acesso confidenciais são mantidos no lado do serviço web, por isso é mais seguro.

Se o programa precisar enviar um e-mail diretamente para você, ele precisará obter essas informações de alguma forma, para que um invasor determinado também possa obter essas informações.

Você já pensou em hospedar um formulário http simples ou serviço da web em algum lugar, para poder postar as informações necessárias no aplicativo (sem necessidade de autenticação) e salvá-las para ver manualmente mais tarde ou enviar o e-mail desse servidor?

Acho que o melhor plano seria enviar as informações de erro para algum serviço (no caso simples, um formulário da web) executado sob seu controle, que poderia então enviar um e-mail (ou registrá-lo de alguma outra forma apropriada).

Se o envio do e-mail for considerado benéfico para o usuário final, outra opção seria fazer com que o usuário insira seu próprio servidor SMTP (e nome de usuário/senha, se necessário). - Em sistemas Unix, você pode simplesmente usar sendmail e confiar em o usuário para que ele seja configurado corretamente.Eu costumava trabalhar em um sistema que usava essa abordagem para enviar ao usuário relatórios das tarefas agendadas do sistema e funcionava muito bem.

O que você precisa fazer é conhecer o servidor SMTP do ISP que você está usando, porque quando você usa o servidor SMTP do seu próprio ISP, você não é considerado como spam de retransmissão de correio, portanto pode passar sem qualquer autenticação.

Infelizmente, nem sempre é possível obter essas informações facilmente OU há uma pequena exceção que não permite fazer login anonimamente, como quando você usa o Exchange em uma empresa...

A princípio pensei em criptografar suas informações e descriptografá-las em tempo de execução, mas ainda estaria disponível farejando a placa de rede.No entanto, você pode combinar isso com um serviço da web em algum lugar que faça a descriptografia e o envio para você (ou envie informações diretamente para o serviço da web, conforme sua preferência), como já sugerido por outros.

MailMessage msg = new MailMessage("someone@foo.com", "someoneelse@bar.com");
msg.Subject = "Check it out!";
msg.Body = "Visit stackoverflow.com!";
SmtpClient client = new SmtpClient("some.smtp.server", 25);
client.Send(msg);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top