Neste artigo montaremos um exemplo bem simples de envio de
E-mails com a possibilidade de enviar anexos e utilizando autenticação.
Construiremos este exemplo utilizando os denominados “Windows Forms” com o
Visual Studio 2005 junto com a linguagem C#.
Para isto abra o Visual Studio 2005 e em File/ New/ Project
em Project Types deixe como “Visual C#” em “Templates” escolha “Windows
Application” e na região inferior colocaremos um nome para nossa “solution” e
escolheremos uma pasta para ser salvo, Veja Figura 01 para melhores detalhes.
Figura 01. Iniciando o
projeto.
Iremos alterar as seguintes propriedades do Formulário.
Name: FmEnvia
StartPosition: CenterScreen
Text: Windows Forms - Envio de E-mails
Em seguida colocaremos quatro componentes Textbox, quatro Labels,
um Listbox e dois Buttons.
O formulário deverá ficar parecido com o da figura 02. É
importante ressaltar que no Textbox da Mensagem a propriedade Multiline foi deixada como true, ou
seja, possibilita mais de uma linha.
Figura 02. Formulário de
Envio.
Depois de montarmos o Layout de nosso exemplo iremos colocar
mão na massa, vamos para a codificação do mesmo.
Trabalharemos com as classes
contidas nos seguintes Namespaces:
using
System.Net.Mail;
using System.Net;
Basta declará-las
logo no início do programa para assim podermos utilizá-las!
Criaremos dois
métodos simples, um para limpar os componentes após o Envio do E-mail e outro
para habilitar e desabilitar os botões.
/* Limpar os componentes*/
private void Limpar()
{
textBox1.Clear();
textBox2.Clear();
textBox3.Clear();
textBox4.Clear();
listBox1.Items.Clear();
textBox1.Focus();
}
/* Habilitando e Desabilitando os botões*/
private
void Hab_Des()
{
button1.Enabled = !button1.Enabled;
button2.Enabled = !button2.Enabled;
}
Codificando o botão Enviar
Agora, vamos para a implementação do código para envio do e-mail
no evento Click do botão Enviar, confira abaixo.
private
void button1_Click(object sender, EventArgs e)
{
this.Cursor = Cursors.WaitCursor;
Hab_Des();
MailMessage mailMsgMensagem = new
MailMessage(textBox1.Text, textBox2.Text);
mailMsgMensagem.Subject = textBox3.Text;
mailMsgMensagem.Body = textBox4.Text;
Nesta parte do código deixaremos o cursor
do mouse como uma ampulheta (para dar a impressão do envio) em seguida chamaremos
o método Hab_Des para assim desabilitarmos os botões.
A próxima linha utilizaremos a classe
MailMessage para inserirmos o remetente e o(s) destinatário(s) respectivamente.
Através das propriedades Subject e Body definimos o Assunto e o Corpo do E-mail
respectivamente.
- Configurando os anexos
for (int i = 0; i <
listBox1.Items.Count; i++)
{
Attachment Anexo = new
Attachment(@listBox1.Items[i].ToString());
mailMsgMensagem.Attachments.Add(Anexo);
}
- Configurando as credenciais
É importante ressaltar que existem
servidores de E-mails que solicitam autenticação no envio de E-mails , e isto é
facilmente resolvido utilizando a classe NetworkCredential, confira logo
abaixo:
/* Configurando Credenciais (senha e usuário) */
NetworkCredential
Email = new NetworkCredential();
Email.Password = "sua_senha";
Email.UserName = "sua_conta";
Utilizaremos as proriedades Password e
Username para definir Senha e usuário respectivamente.
- Definindo o Servidor SMTP
Para definirmos o servidor SMTP usaremos a
classe SmtpClient, logo em seguida adicionamos as credenciais definidas acima,
veja abaixo o código simples.
SmtpClient
ClientSMTP = new SmtpClient("smtp.seuprovedor.com.br");
ClientSMTP.Credentials = Email;
- Enviando o E-mail
Criaremos um bloquinho Try... Catch...
para tratarmos o envio do email, ou seja caso ocorra algum problema no envio
levantaremos uma excessão e emitiremos uma mensagem ao usuário, caso contrário
o e-mail será enviado com sucesso.
try
{
ClientSMTP.Send(mailMsgMensagem);
MessageBox.Show("Email
enviado com sucesso!");
}
catch (Exception Ex)
{
MessageBox.Show("Ocorreu algum
problema ao enviar o Email Erro: " + Ex.Message);
}
this.Cursor = Cursors.Default;
Hab_Des();
Limpar();
}
Para enviarmos o E-mail basta utilizar o Método
Send tendo como parâmetro o objeto oriundo da classe MailMessage, no nosso caso
este objeto chama-se mailMesgMensagem.
Em seguida deixaremos o cursor como padrão,
habilitaremos os botões e limparemos os componentes através do método Limpar.
Codificando o botão Anexar
Utilizaremos um componente chamado
OpenFileDialog, encontrado na paleta Dialogs, ele servirá para escolher o
arquivo a ser anexado.
private
void button2_Click(object sender, EventArgs e)
{
if (openFileDialog1.ShowDialog() = =
DialogResult.OK)
listBox1.Items.Add(openFileDialog1.FileName);
}
O método
ShowDialog servirá para escolhermos o arquivo e o Listbox1.Items.Add para
adicionarmos o path (caminho) dos arquivos escolhidos anteriormente.
Conclusão
Vimos neste
artigo como enviar E-mails com anexo e autenticação no servidor utilizando
Windows Forms mas poderíamos utilizar Web Forms sem muitas alterações no
código. Espero que tenham gostado, sucesso a todos e até a próxima!
Nenhum comentário:
Postar um comentário