Desenvolvimento - C#

Envio de email utilizando C#

Todos nós sabemos da importância de permitir que você se comunique com as pessoas que acessam o seu site. Neste artigo vamos aprender como enviar email usando a linguagem C#.

por Fernanda Sallai



Neste artigo você aprenderá como enviar email utilizando a linguagem C#.

Criaremos com o Visual Studio uma aplicação simples para o melhor entendimento do código necessário para o envio de email.

Vamos começar?!

Criando um projeto

Criaremos um projeto usando o Visual Studio clicando no menu File (arquivo) – New (novo) – Project (projeto), em Project Types (Tipos de projeto) escolha Visual C# e em Templates escolha ASP.NET Web Application, digite o nome e o local que salvará sua aplicação e clique em OK. Para ver detalhes observe a Figura 1.

Figura 1. Criando um projeto web

Incluindo no Web.Config

Criaremos uma chave que irá conter o email do remetente. Essa chave terá um nome e um valor e será inserida dentro da tag <appSettings>.

Incluiremos também o smtp, o nome e a senha do usuário do email remetente dentro das tags <system.net><mailSettings>. O conteúdo incluído no  Web.Config segue na Listagem1

Listagem 1. Conteúdo do web.config

<?xml version="1.0"?>

<configuration>

<appSettings>

<add key="emailRemetente" value="emaildoremetente"/>   

      </appSettings>   

<system.net>

            <mailSettings>

<network host="smtpdoemaildoremetente" port="25"  userName="emaildoremetente" password="senhadoemaildoremetente"/>

            </mailSettings>

      </system.net

</configuration>

Criando a classe de email

Para isso clique no ícone do projeto em Solution Explorer com o botão direito do mouse, escolha Add Class. Nomeie seu novo arquivo e clique em add. Os detalhes dessa operação podem ser vistos nas Figuras 2 e 3 e seu conteúdo na Listagem 2.

Figura 2. Adicionando uma classe ao projeto

Figura 3. Criando uma classe

Listagem 2. Conteúdo da classe email

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Configuration;

using System.Net.Mail;

namespace Email

{

    public class email

    {

        /// <summary>

        /// Método para enviar email

        /// </summary>

        /// <param name="emailDestinatario">Email do destinatário</param>

        /// <param name="assunto">Assunto do email</param>

        /// <param name="mensagem">mensagem do email</param>

        public static void EnviarEmail(string emailDestinatario, string assunto, string mensagem)

        {

            //Cria o objeto que envia o e-mail

            SmtpClient client = new SmtpClient();

            //Cria o endereço de email do remetente

            MailAddress de = new MailAddress(ConfigurationSettings.AppSettings["emailRemetente"]);

            //Cria o endereço de email do destinatário -->

            MailAddress para = new MailAddress(emailDestinatario);

            MailMessage mensagem = new MailMessage(de, para);

            mensagem.IsBodyHtml = true;

            //Assunto do email

            mensagem.Subject = assunto;

            //Conteúdo do email

            mensagem.Body = mensagem;

            try

            {

                //Envia o email

                client.Send(mensagem);

            }

            catch

            {

            }

        }

    }

}

Criando página para o envio do email       

Para isso clique no ícone do projeto em Solution Explorer com o botão direito do mouse, escolha Add New Item. Na janela que se abre selecione o ícone Web Form. Nomeie seu novo arquivo e clique em add. Os detalhes dessa operação podem ser vistos nas Figuras 4 e 5.

Figura 4. Adicionando um novo ítem ao projeto

Figura 5. Criando um Web Form

A página terá o modelo conforme a Figura 6 e seu conteúdo segue nas listagens 3 e 4.

Figura 6. Criando uma página

Listagem 3. Conteúdo da página aspx

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Email.aspx.cs" Inherits="Email.Email" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" >

  <head id="Head1" runat="server">

    <title>Enviando email</title>

  </head>

  <body>

    <form id="frmAspNet" runat="server">

    <div>       

      <table style="width: 33%;">

        <tr>

          <td>Email do Destinatário:</td>

          <td>

            <asp:TextBox ID="txtEmail" runat="server"  Width="200px"></asp:TextBox>

          </td>               

        </tr>

        <tr>

          <td>Assunto:</td>

          <td>      

           <asp:TextBox ID="txtAssunto" runat="server" Width="200px"></asp:TextBox>

          </td>        

        </tr>

        <tr>                                   

    <td>Mensagem:</td>

          <td>

            <asp:TextBox ID="txtMensagem" TextMode="MultiLine"  runat="server"   Width="200px"></asp:TextBox>

          </td>              

        </tr>

        <tr>

          <td colspan="2" align="right">

            <asp:Button ID="Button1" runat="server" Text="Enviar" />

          </td>                             

        </tr>

      </table>

      <asp:Label ID="lblErro" runat="server"></asp:Label>

    </div>

    </form>

  </body>

</html>

Listagem 4. Conteúdo da página aspx.cs

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

namespace Email

{

    public partial class Email : System.Web.UI.Page

    {

        protected void Page_Load(object sender, EventArgs e)

        {

        }

        protected void Button1_Click(object sender, EventArgs e)

        {

            if (CamposPreenchidos())

            {

                //Chama o método de envio de email.

                //Passando o endereço do email destinatário, assunto e mensagem.

                email.EnviarEmail(txtEmail.Text, txtAssunto.Text, txtMensagem.Text);

            }

        }

       

        /// <summary>

        /// Método para verificar se todos os campos estão preenchidos

        /// </summary>

        /// <param name="emailDestinatario">Email do destinatário</param>

        /// <param name="assunto">Assunto do email</param>

        /// <param name="mensagem">mensagem do email</param>

        private bool CamposPreenchidos()

        {

            bool preenchidos = true;

            if (txtEmail.Text == string.Empty)

            {

                lblErro.Text = "O email do destinatário é obrigatório.";

                preenchidos = false;

                return (preenchidos);

            }

            if (txtAssunto.Text == string.Empty)

            {

                lblErro.Text = "O assunto do email é obrigatório.";

                preenchidos = false;

                return (preenchidos);

            }

            if (txtMensagem.Text == string.Empty)

            {

                lblErro.Text = "A mensagem do email é obrigatória.";

                preenchidos = false;

                return (preenchidos);

            }           

            return (preenchidos);

        }       

    }

}

Conclusão

Esse artigo abordou de forma prática e simples o envio de email através da linguagem C#.

Espero que tenham gostado do artigo e fiquem a vontade para fazer suas implementações como, por exemplo, incluir um anexo.

Obrigada e até a próxima.

Fernanda Sallai

Fernanda Sallai - Bacharel em Sistemas de Informação na FICS - Faculdades Integradas Campos Salles, reside em São Paulo - SP, atua no desenvolvimento de aplicações Web / Windows Forms e escreve periodicamente em seu blog www.fernandasallai.com.