Tutorial C# – Enviar e-mail a partir de uma Windows Forms

Este tutorial serve para demonstrar como se pode enviar um e-mail utilizando uma Windows Form em C#. Será um formulário muito simples, mas com possibilidade de se tornar extremamente completo. Como já anteriormente se tinha sucedido com o tutorial ”como imprimir o conteúdo de uma datagridview”, este tutorial surgiu da necessidade de criar algo simples, mas que acima de tudo, funcione!

Após várias horas de pesquisa, muitos sites vistos, algumas dezenas de exemplos complicados ou que nem sequer funcionavam, e quase sem esperança de encontrar uma ajuda na Internet, juntei vários exemplos e no fim tinha o que eu queria.

Mãos à obra.

Primeiro criamos um novo projecto, e definimos os campos que queremos que sejam utilizados. Neste caso usei cinco campos: Para; CC; Anexo; Assunto; Mensagem.

Agora vamos ao código.

Primeira parte do Código:

Apesar de não ser totalmente necessário, criei um método void para o envio do e-mail.

Neste início de código podem facilmente identificar o modo de como inserir os campos e associar a uma TextBox ou a um email previamente definido.

É importante realçar que foi utilizado o namespace System.Net.Mail.

Sem este namespace seria impossível utilizar ou chamar as funcionalidades referentes ao email. Normalmente estes namespace são utilizados logo no início, juntamento com os:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

Mas neste caso utilizei directamento no código.

Segunda parte do Código:

Terceira parte do Código:

Nesta terceira parte do código entramos na área mais técnica.

Para terminar, vamos adicionar código ao botão que irá anexar algo.

Antes de adicionar o código, é necessário adicionar o openFileDialog, que nos permitirá seleccionar o ficheiro a anexar.

Para isso basta “arrastar” o openFileDialog da Toolbox para a “Form”.

Quarta parte do Código:

Esta última parte do código serve para adicionar o método SendEmail() no botão que enviará o e-mail, e também inserir o código no botão que irá anexar algum ficheiro.

No botão que servirá para anexar um ficheiro o código será:

No botão que enviará o e-mail, o código será:

E assim acabamos o Código.

Exemplo:

E aqui está o resultado do envio:

Como em tudo na vida, é possível personalizar ao máximo estes envios, como também fazer validações (por exemplo caso o campo CC não esteja preenchido. Mas isso já depende dos gostos pessoais.

Espero que tenham gostado.

  
     Pin It  

Arquivado na categoria: CSharp, Tutoriais


56 Comentários

  1. Excelente. Era mesmo disto que eu andava à procura. Simples e eficaz. Não imaginas as horas que andei na internet a pesquisar isto.

    PS: Ainda bem que voltaram os tutorial de C#.

  2. FÁCIL E PRÁTICO

  3. Muito nice… estes tutorials são porreiros, continua!

  4. Era Porreiro o “Copy Paste” lol

  5. Grande Artigo :) Parabéns e continua

  6. Peço desculpa por ser nabo! :) Mas tirando a utilidade académica, em termos práticos isto tem mais algum interesse? Uso o web gmail, teria alguma vantagem com o uso disto?

    abraço

    • Isto tem sobretudo utilidade para programadores em C# e que querem integrar numa aplicação um form de email. Não serve de maneira nenhuma para “substituir” um outlook ou um gmail :)

      Cumps

    • Boas ,eu na verdade uso algo semelhante para fazer o backup de código gerado por uma aplicação minha, o objectivo é se um problema acontecer, no mail vai estar sempre uma versão anterior.
      antes disso, usei para relato de erros, mas ultimamente desactivei essa funcionalidade.

  7. Sr Hélio, e como adicionamos a imagem (neste caso a do pplware)?

    Abraço.

  8. Peço desculpa pelo offtopic!

    Mas precisava de uma dica, preciso de um programa de sincronização, ou seja, que grave os meus ficheiros noutro lado quando é alterado…por exemplo um doc do word, eu faço gravar no C:\ e fica gravado também no D:\ !

    Alguém Conhece?

    :)

  9. Sem dúvida um excelente artigo :)

  10. Parabens pelo artigo

  11. Boas :D

    Parabéns pela iniciativa, eu comecei há pouco tempo a programar C#, mas tenho tido alguns problemas em ligar aquilo a uma base de dados, e trabalhar com ela, será que podiam fazer um tutorialzinho disso?

    Cumprimentos

  12. Talvez Off topic.

    Boas,

    Gostaria de saber a vossa opinião em relação ao seguinte:

    Consideram que fale a pena apostar na minha formação nesta linguagem de programação?

    Queria aprender a programar, acham que este é um bom patamar de partida?

    Obrigado.

    • “Queria aprender a programar, acham que este é um bom patamar de partida?”

      Meu amigo…

      Não existe melhor para começar, .NET e principalmente c# vai-te dar um leque grandioso de opções no mercado de trabalho. É “simples” mas muito robusto e muito prático.

      Ao longo da tua vida/carreira vais ver que não podes nem te irás deparar só com uma linguagem, o truque, tens de ser bom programador( lógica, Abstracção, OOP ) depois qualquer linguagem te vai parecer igual.

      Cumprimentos

      PS: depois tens de ver onde te inseres, se Web ou Cliente, se somente Windows ou todos os sistemas.

    • Amigo, se nunca programaste… começa com a linguagem que mais pessoas usam e ensinam nas escolas ao começar a programar: Linguagem C

    • As melhores linguagens de programação para se aprender a programar são as funcionais. O Haskell é um grande ponto de partida.

      Se não for do agrado, o C é sempre um bom começo.

  13. Se pudesses fazer um sobre C# e base de dados (Microsoft Office Access 2007), adicionar, remover, ordenar, procurar dados, era de valor amigo!

    Agradeço desde já este tutorial. Cumprimentos!

  14. Teria como disponibilizar para Downlaod ?
    Estou com alguns problemas para poder conseguir desenvolver.

    Obrigado

  15. Boas, não sei se deve postar aqui ou não, eu tenho de fazer uma aplicação movel, exactamente com este conceito de enviar email pela aplicação movel…será que me podem ajudar, ja pesquisei e não encontrei nada. Obrigado

  16. Poderia disponibilizar o codigo? obrigado

  17. E teria como mandar para uma lista de pessoas?

    Qual seria o código para eu carregar essa lista de email de um arquivo txt?

    Obrigado

  18. nao da para por o codigo, nao consigo por a funcionar

  19. Eu utilizei esse código para a minha aplicação, funciona perfeitamente, mas quando utilizo o software em rede ele não funciona, apenas no pc em que tenho o c# e desenvolvi o software.

    Alguém sabe o que pode estar mal ?

  20. Parabens Cara era exatamente o que eu queria

  21. Boas

    Já fiz a aplicação no entanto diz que manda o email mas nao recebo nada ….

    Alguém me pode ajudar?

  22. Boa tarde , estou a trabalhar em c# so que em vez de windows forms estou a trabalhar em Wpfapllication que é destinado a pda , todo o código funciona com um pequeno problema o anexo porque eu não tenho o botão openFileDialog então não consigo por o anexo a funcionar , ha algum botão que substituía este ? o que devo fazer ?

    Obrigado desde já , excelente trabalho muito bem explicito , parabéns

  23. Brilhante artigo!
    Agradeço imenso o trabalho.

  24. Lucas Schlottfeldt

    Caramba, funcionou.

    Parabéns cara, é simples e prático.
    Muito obrigado!!!!!

  25. Boas

    Podias era por o downlowd do programa e do codigo sff se possivel xD

  26. Esse foi fácil de implementar.

    Tem como consultar a caixa de entrada de um e-mail via Código C# utilizando uma aplicação Windows Forms?

  27. Obrigado. Fácil implementar. Parabéns pela explicação.

  28. Alguem sabe me falar como fazer pra enviar o email sem que obrigatoriamente se anexe algo?

  29. Ola a todos
    eu estou com um probleminha aqui como não tenho domínio para colocar
    tentei colocar o do Gmail só que esta dando erro nessa linha
    code:
    smtp.Send(message);

    ha
    mais uma coisas nas Credentials devemos colocar o que no “oMeuUserName” e que senha
    code:
    smtp.Credentials = new System.Net.NetworkCredential(“oMeuUsername”, “Password”);

Deixe o seu comentário

Aviso: Todo e qualquer texto publicado na internet através deste sistema não reflete, necessariamente, a opinião deste site ou do(s) seu(s) autor(es). Os comentários publicados através deste sistema são de exclusiva e integral responsabilidade e autoria dos leitores que dele fizerem uso. O autor deste site reserva-se, desde já, o direito de excluir comentários e textos que julgar ofensivos, difamatórios, caluniosos, preconceituosos ou de alguma forma prejudiciais a terceiros. Textos de caráter promocional ou inseridos no sistema sem a devida identificação do seu autor (nome completo e endereço válido de email) também poderão ser excluídos.