O NeoMatrix Tech está de casa nova!

Você deverá ser redirecionado em 6 segundos. Se não, visite:
http://www.leonelfraga.com/neomatrixtech
e atualize seus favoritos.

Aviso IMPORTANTÍSSIMO!

Aviso aos navegantes:

O NeoMatrix Tech mudou de casa!!!

A partir de agora, acessem pelo novo endereço:

http://www.leonelfraga.com/neomatrixtech

Ué... mas é só o domínio mudou de lugar?

R: Na verdade, não é bem assim hehe. Este domínio que você acessa agora aponta para um blog hospedado no Blogger, enquanto no novo, aponta para um blog na plataforma Wordpress, hospedagem própria, muito mais rápida e com um layout mais agradável de ler ;)

Não vou fechar este domínio igual ao que eu fiz com o NM Light (que já está 100% na nova plataforma). Talvez beeeeeeem depois eu faça isso.

Todos os posts daqui se encontram lá, e novos posts serão colocados somente no novo endereço.
A única coisa que não consegui importar foram os comentários. Mas em breve vai ter um post contando sobre a epopéia que foi migrar o NeoMatrix Tech!

Somente vou fechar a área de comentários daqui. Caso queiram comentar, favor ver o post correspondente no "Novo NeoMatrix Tech" e comentem por lá. É bem melhor! (pena que os permalinks "amigáveis para SEO" não funcionam lá, dá erro 404 e não consigo fazer a configuração funcionar. E olha que eu já vi vários artigos falando desse assunto :( ).

Quem assina o feed, já está lendo o conteúdo do novo NeoMatrix Tech!

sábado, 13 de junho de 2009

Enviando um e-mail através de .NET 1.1 utilizando SMTP com autenticação, sem componentes de terceiros

Republicando um tutorial que coloquei em um site meu antigo, que estava hospedado no GeoCities (Vá com Deus, GeoCities!) e que ainda pode ser útil para muita gente que ainda não fez a migração de .NET Framework:

Enviar e-mail utilizando a plataforma .NET 1.1 é muito simples, pois ele já vem com classes para tal, incluídos no namespace System.Web.Mail.

Muito útil, só que do jeito que vários sites por aí explicam, tem um pequeno detalhe: você precisa utilizar um servidor SMTP que não requeira autenticação. Sendo assim, é muito mais fácil utilizarmos um servidor de SMTP instalado na máquina que hospeda o site.

Mas... se eu quiser fazer um site que me permita enviar e-mail a partir dele, não quero utilizar os serviços de form mail e hospedar a página em um brinkster da vida? Claro que eles não vão me disponibilizar o servidor SMTP deles no plano gratuito, né? Além disso, os servidores SMTP de provedores como Yahoo não permitem enviar um e-mail sem que eu esteja autenticado em seus servidores.

Precisando resolver um problema na empresa em que eu trabalho, dei uma pesquisada na net sobre envio de e-mail com ASP.NET utilizando autenticação SMTP. A esmagadora maioria dos artigos em português ( ou até mesmo estrangeiros ) mostrava como fazer, porém utilizando componentes externos, e os que suportam autenticação eram pagos.

Resolvi pesquisar por sites gringos mesmo, eis que eu achei um código que resolveu o meu problema e passo para vocês agora!

Primeiramente, criei um projeto no Visual Studio 2003, utilizando a linguagem C# e coloquei os componentes conforme a imagem abaixo:

artigo_email_aspnet1

São vários textbox, indicando o remetente, destinatário, assunto, mensagem, botões de enviar e de limpar campos. Na tabela ao lado, há locais para colocar os dados do servidor SMTP a ser utilizado para o envio do e-mail. Também coloquei alguns "Required Validators" em alguns campos.

Agora vem a parte interessante!

Adicione o namespace System.Web.Mail em seu projeto e veja a seguir o código do botão "Enviar":

   1: private void btnEnviar_Click(object sender, System.EventArgs e)
   2: {
   3:     MailMessage eMail = new MailMessage();
   4:     eMail.BodyFormat = MailFormat.Text;
   5:     eMail.From = txtDe.Text;
   6:  
   7:     //Parâmetros que devem ser configurados caso queira utilizar autenticação no servidor SMTP
   8:     eMail.Fields["http://schemas.microsoft.com/cdo/configuration/smtsperver"] = txtSMTPServer.Text;
   9:     eMail.Fields["http://schemas.microsoft.com/cdo/configuration/smtpserverport"] = 25;
  10:     eMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendusing"] = 2;
  11:     if (txtSMTPUser.Text != "" && txtSMTPPass.Text != "")
  12:     {
  13:         eMail.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"] = 1;
  14:         eMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"] = txtSMTPUser.Text;
  15:         eMail.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"] = txtSMTPPass.Text;
  16:     }
  17:  
  18:     //Caso os o box de usuário ou senha estiver vazio, não utiliza a autenticação SMTP
  19:     eMail.To = txtPara.Text;
  20:     eMail.Body = txtMensagem.Text;
  21:     SmtpMail.SmtpServer = txtSMTPServer.Text;
  22:     SmtpMail.Send(eMail);
  23: }

Vamos analisar este código?

As partes em preto, já são velhas conhecidas nossas, e só com ela você poderá enviar o e-mail utilizando um servidor SMTP sem autenticação.

As partes em vermelho, configuram certos parâmetros do objeto eMail, através da propriedade Fields. Na primeira linha em vermelho, temos o endereço ( nome ou IP ) do servidor SMTP a ser utilizado, em seguida a porta.

Caso os textbox de usuário e senha da página estiverem preenchidos, eles configurarão mais parâmetros: a ativação da autenticação SMTP, o usuário e senha do servidor informado. Caso estivessem vazios, os parâmetros para a autenticação não seriam passados e o e-mail seria enviado pelo jeito "convencional".

Para uma maior segurança, você poderá configurar o servidor SMTP, usuário e senha no seu Web.config e recuperar estes parâmetros depois, ou até mesmo atribuí-los nos respectivos campos ( eles são do tipo string ).

Agora… o .NET Framework 2.0 ou acima oferece tudo o que foi explicado acima nativamente, através do namespace System.Net.Mail. Depois vamos ver como se faz da forma mais atualizada ;-)

Se tiverem curiosidade de ver o original, clique aqui (lembrando que em breve este site sairá do ar, e não recebe atualizações há muuuuito tempo hehe).

Um abraço!

3 comentários:

Anônimo,  15 de dez. de 2009, 14:31:00  

Eu descobri um e-mail fantástico na internet e gostaria de compartilhar com todos internautas no mundo.Um grande abraço a todos e um ótimo final de ano.

Anônimo,  16 de dez. de 2009, 10:25:00  

Olá, essa autenticação não funciona mais, pelo menos não utilizando o bde 2006. Troquei o servidor antigo (que não precisava de autenticação) por um novo e agora fiquei na mão. Estou utilizando o o servidor de e-mail do próprio iis, mas todas as mensagens ficam paradas na pasta queued.

Leonel Fraga de Oliveira 16 de dez. de 2009, 22:34:00  

@Anônimo:
Hum... Você tá usando o da Borland, né? Se sim, será que não tem as bibliotecas Indy? Me lembro que pelo menos no Delphi 7, tinha uma classe lá para enviar email, e que suporta autenticação.

E se tiver usando .NET e Framework 2.0 ou acima, recomendo usar a classe SmtpClient do namespace System.Net.Mail, que lá tem a propriedade Credentials, para criar uma credencial de rede (com usuário e senha).


Postar um comentário

Para tornar este artigo ainda mais interessante, escreva suas críticas (desde que construtivas e sem ofenças), elogios, sugestões, complementos, dúvidas, etc, etc, etc!!!

  © Blogger templates ProBlogger Template by Ourblogtemplates.com 2008 - Editado e configurado por Leonel F.

Voltar ao TOPO