Essa é uma excelente oportunidade para adquirir novos conhecimentos.

Eu já estou participando e vc?

Para participar clique aqui.

Bons estudos !!!


C# - Enviando email

Publicado 14/4/2009 por fernandasallai em C#
Tags:

Todos nós sabemos da importância de permitir que você se comunique com as pessoas que acessam o seu site. Por isto, irei demonstrar de maneira simples o envio de emails utilizando C#.

Vamos começar !

Web.config

Nosso web.config ficará conforme listagem 1.

<?xml version="1.0"?>

<configuration>
  
  <!-- Incluir uma chave chamada emailFrom contendo o email do remetente dentro da tag appSettings -->
  <appSettings>
    <add key="emailFrom" value="emailRemetente"/>
  </appSettings>

  <system.net>
    <mailSettings>
      <smtp>
        <!-- Incluir no host o smtp, no userName o endereço de email do remetente e no password a senha do email do remetente -->
        <network host="smtpEmail" port="25" userName="emailRemetente" password="senhaEmailRemetente"/>
      </smtp>
    </mailSettings>
  </system.net>

  <system.web>
        <compilation debug="true" targetFramework="4.0" />
    </system.web>

</configuration>

Listagem 1 - Código no Web.Config.

Classe email

Vamos criar uma classe chamada Email com o código da listagem 2. Para adicionar uma classe clique com o botão direito do mouse em cima do projeto - ADD - Class - nomeie a classe.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

// namespace para o e-mail
using System.Net.Mail;

// namespace do ConfigurationManager
using System.Configuration;

namespace EnviandoEmail
{
    public class Email
    {
        /// 
        /// Enviar e-mail
        /// 
        /// Endereço do destinatário
        /// Assunto do e-mail
        /// Conteúdo do e-mail
 
        public static void EnviarEmail(string email, string assunto, string conteudo)
        {
            //Cria o objeto que envia o e-mail 
            SmtpClient client = new SmtpClient();

            //Cria o endereço de email do remetente 
            MailAddress de = new MailAddress(ConfigurationManager.AppSettings["EmailFrom"]);

            //Cria o endereço de email do destinatário -->
            MailAddress para = new MailAddress(email);

            MailMessage message = new MailMessage(de, para);
            message.IsBodyHtml = true;

            //Assunto do email 
            message.Subject = assunto;
            //Conteúdo do email 
            message.Body = conteudo;

            try
            {
                //Envia o email 
                client.Send(message);
            }
            catch
            {
                
            }
        }
    }
}

Listagem 2 - Codificação da classe de e-mail.

Página EnviandoEmail.aspx

Para adicionar a página clique com o botão direito do mouse em cima do projeto - ADD - New item - Web Form - nomeie para EnviandoEmail. 

Na listagem 3 e figura 1 serão exibidos como ficará o layout. 

OBS: Este post tem o objetivo de demonstrar o envio de e-mail, então não me preocupei com o layout. Claro que você poderá melhorá-lo.

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

<!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 e=mail</title>
</head>
<body>
    <form id="frmAspNet" runat="server">
    <br />
    <div>
        <asp:Label ID="lblEmail" runat="server" Text="E-mail" style="padding-right: 35px"></asp:Label>
        <asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>
    </div>   
    <br />
     <div>
        <asp:Label ID="lblAssunto" runat="server" Text="Assunto" style="padding-right: 25px"></asp:Label>
        <asp:TextBox ID="txtAssunto" runat="server"></asp:TextBox>
    </div>
    <br />
    <div>
        <asp:Label ID="lblConteudo" runat="server" Text="Conteúdo" style="padding-right: 15px"></asp:Label>
        <asp:TextBox ID="txtConteudo" runat="server"></asp:TextBox>
    </div>    
    <asp:Button ID="btnEnviarEmail" runat="server" Text="Enviar" onclick="btnEnviarEmail_Click" />
    <asp:Label ID="lblMensagem" runat="server" Text="Label"></asp:Label>
    </form>
</body>
</html>

Listagem 3 - Layout.

Figura 1 - Layout.

Página EnviandoEmail.aspx.cs

Na listagem 4 teremos a codificação de nossa página.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;

// namespace Regex
using System.Text.RegularExpressions;

namespace EnviandoEmail
{
    public partial class EnviandoEmail : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            lblMensagem.Visible = false;
        }

        protected void btnEnviarEmail_Click(object sender, EventArgs e)
        {
            // Validar se campos foram preenchidos
            if (ValidarCampos())
            {
                // Esconde a mensagem de validação
                lblMensagem.Visible = false;

                // Enviar e-mail
                Email.EnviarEmail(txtEmail.Text, txtAssunto.Text, txtConteudo.Text);

                // Limpar todos os campos
                LimparCampos();

                // Exibe mensagem de sucesso no envio do e-mail.
                Page.ClientScript.RegisterStartupScript(this.GetType(), "mensagem de sucesso", "E-mail enviado com sucesso.");
            }
            else
            {
                lblMensagem.Visible = true;
            }
        }

        /// 
        /// Validar preenchimento dos campos
        /// 
        /// True/False
        private bool ValidarCampos()
        {
            bool camposPreenchidos = true;

            if (txtEmail.Text == string.Empty)
            {
                lblMensagem.Text = "Preencha o e-mail.";

                return camposPreenchidos = false;
            }
            else
            {
                if (!IsValidEmail(txtEmail.Text))
                {                    
                    lblMensagem.Text = "O formato do e-mail é inválido.";

                    return camposPreenchidos = false;
                }
            }

            if (txtAssunto.Text == string.Empty)
            {
                lblMensagem.Text = "Preencha o assunto.";

                return camposPreenchidos = false;
            }

            if (txtConteudo.Text == string.Empty)
            {
                lblMensagem.Text = "Preencha o conteúdo.";

                return camposPreenchidos = false;
            }

            return camposPreenchidos;
        }

        /// 
        /// Validar o e-mail
        /// 
        /// E-mail
        /// 
        private bool IsValidEmail(string email)
        {
            // instancia um regex com a expressão desejada
            Regex rg = new Regex(@"^[A-Za-z0-9](([_\.\-]?[a-zA-Z0-9]+)*)@([A-Za-z0-9]+)(([\.\-]?[a-zA-Z0-9]+)*)\.([A-Za-z]{2,})$");

            return rg.IsMatch(email);            
        }

        /// 
        /// Limpar os campos
        /// 
        private void LimparCampos()
        {
            txtAssunto.Text = string.Empty;
            txtConteudo.Text = string.Empty;
            txtEmail.Text = string.Empty;
        }
    }
}

Listagem 4 - Codificação da página.

Pronto... E agora é só enviar o e-mail.... haha

Até mais =D

Projeto disponível: EnviandoEmail.rar (22,88 kb)


 

Esta edição da revista Codificando .Net e-Magazine apresenta o novo time para editoração, agora temos uma equipe profissional no back-office da revista.

Nesta edição, o Anderson Bermar é o autor e o Juliano Schimiguel co-autor de um artigo explicando como acessar o MySQL através de um Data Access Layer no ASP .Net.

Edson Nascimento apresenta uma introdução ao XNA, criando um Hello Word com os princípios básicos do desenvolvimento de games.

Fábio Câmara dá uma explanação sobre SCRUM em seu artigo comentando sobre esta metodologia.

Demétrio Silva mostra a funcionalidade de auditoria que foi criada no SQL Server 2008, o SQL Server Audit.

Roni Marcello e Juliano Schimiguel apresentam o conceito e a utilização de Marshups na tecnologia Silverlight.

Juliana Prado comenta em seu artigo a evolução da metodologia de desenvolvimento de software.

E pra finalizar, Ivan Sampaio e Juliano Schimiguel apresentam de forma clara como criar um Cubo OLAP.

 

Boa leitura.

Fernanda Sallai  


Fernanda Sallai

Sem a curiosidade que me move, que me inquieta, que me insere na busca, não aprendo nem ensino - Paulo Freire