Olá pessoal, como foi dito no primeiro artigo, essa segunda parte será bem simples. Mostra que depois do cadastro do usuário é enviado um e-mail automaticamente. Antes de tudo irei criar duas novas classes para o projeto. Uma se chamará ConstantesSistema.cs e a outra EnviaEmail.cs.

 

Requisitos:

- Visual Studio .NET 2005

- Ler o a primeira parte do artigo.

 

A primeira classe armazena as variáveis do sistema para enviar e-mail.

A segunda classe terá dois métodos para enviar e-mail automaticamente.

A classe EnviaEmail.cs estende da classe ConstantesSistema.cs, ou seja, todas as variáveis e métodos criados na classe estendida poderá ser acessado e usado na classe de e-mail.

 

Referência: 1.1

 

As duas classes circuladas na figura 1.1 mostra que serão usadas neste artigo.

Seguindo com o sistema, a figura 1.2 é mostrada apenas as variáveis.

 

 

 Referência: 1.2

 

Segue a descrição abaixo para facilitar a copia.

 

 

public class ConstantesSistema

{

      public string MAIL_DE = "EMAIL QUE IRÁ ENVIAR";

      public string PW_DE = "SENHA DO EMAIL";

      public string SMTP_MAIL = "SMTP DO SERVIDOR DE EMAIL";

      public string SMTP_AUT = "1";

}

 

Referência: 1.3

Explicando as variáveis:

 

MAIL_DE é o e-mail que estará no campo e-mail de. Imagine mandando um e-mail, sempre o seu e-mail estará no campo e-mail de.

PW_DE é a senha do e-mail que enviará.

SMTP_MAIL é o smtp do servidor de e-mail que tens, por exemplo, smtp.terra.com.br.

SMTP_AUT é o tipo da autenticação, ou seja, numero 1.

 

É bem simples a classe ConstantesSistema.cs.

 

 

Referência: 1.4

 

Continuando com o artigo e indo para a classe de E-mail, irei inserir dois métodos, um para autenticar e outro para enviar o e-mail propriamente dito.

 

 

 

Referência: 1.5

 

A figura 1.5 mostra o método que envia e-mail. Analisando a assinatura do método, veja que não retorna valor algum e espera quatro parâmetros de entrada. Segue o código.

 

 

/// <summary>

      /// Envia e-mail automaticamente

      /// </summary>

      /// <param name="usuarioNome"></param>

      /// <param name="usuarioEmail"></param>

      /// <param name="descricaoEmail"></param>

      /// <param name="tituloEmail"></param>

      public void enviarEmail(string usuarioNome, string usuarioEmail,

                        string descricaoEmail, string tituloEmail)

      {

            try

            {

                  MailMessage mail = new MailMessage();

                  mail.From = MAIL_DE;

                  mail.To = usuarioEmail;

                  mail.Subject = tituloEmail;

                  mail.BodyFormat = MailFormat.Html;

 

                  mail.Body = descricaoEmail;

 

                  getAutenticacao(mail);

 

                  SmtpMail.SmtpServer = SMTP_MAIL;

                  SmtpMail.Send(mail);

 

            }

            catch (Exception e)

            {

                  throw new Exception(e.Message);

            }

      }

 

Referência: 1.6

 

Explicando os parâmetros de entrada:

usuarioNome: é o nome do usuário que receberá o e-mail.

usuarioEmail: é o e-mail do usuário que irá receber.

descricaoEmail: é a descrição do e-mail que irá ao corpo da mensagem.

tituloEmail: é o titulo que irá no e-mail enviado.

 

Isso tudo, usarei dentro do bloco try do método. O método catch pega o erro que ocorrer. Primeiro instancio o método da classe using System.Web.Mail; chamado MailMessager. O nome da variável chama-se mail. Portanto uso-a para atribuir os parâmetros e valores em seus respectivos campos.

 

 

try

            {

                  MailMessage mail = new MailMessage();

                  mail.From = MAIL_DE;

                  mail.To = usuarioEmail;

                  mail.Subject = tituloEmail;

                  mail.BodyFormat = MailFormat.Html;

 

                  mail.Body = descricaoEmail;

 

                  getAutenticacao(mail);

 

                  SmtpMail.SmtpServer = SMTP_MAIL;

                  SmtpMail.Send(mail);

 

            }

 

Referência: 1.7

 

Não esqueça de que uso as variáveis da classe constantesSistema. Isso economiza muita coisa, se o e-mail ou senha ou smtp mudar, apenas será mudado em um local, ou seja, na classe ConstantesSistema.cs.

A linha que está em amarelo é um outro método que serve para autenticar a mensagem que será enviada.

 

 

 

 

private void getAutenticacao(MailMessage mail)

      {

            mail.Fields["http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"] = SMTP_AUT;

            mail.Fields["http://schemas.microsoft.com/cdo/configuration/sendusername"] = MAIL_DE;

            mail.Fields["http://schemas.microsoft.com/cdo/configuration/sendpassword"] = PW_DE;

      }

 

Referência: 1.8

 

 

Veja que estou usando as variáveis da outra classe.

Pronto, agora já foram criadas as duas classes que precisava para enviar e-mail automaticamente.

 

Referência: 1.9

 

 

Vá para a classe Default.aspx e depois que o cadastro foi feito, dentro do bloco if instancie o método da classe de e-mail passando os parâmetros. Veja como ficará o mesmo abaixo.

 

 

 

 

protected void cmbGravar_Click(object sender, EventArgs e)

      {

            usuarioDAO dao = new usuarioDAO();

            usuarioDTO dto = new usuarioDTO();

 

            setValores(dto);

 

            if (dao.insereUsuarioDAO(dto))

            {

                  EnviaEmail sEmail = new EnviaEmail();

                  sEmail.enviarEmail(txtNome.Text, txtEmail.Text, "Obrigado pelo cadastro", "Cadastro realizado com sucesso ");

                  Response.Redirect("resultadoFinal.aspx");

            }

            else

            {

                  Response.Redirect("resultadoFinalErro.asp");

            }

      }

 

Referência: 1.10

 

As linhas que estão de amarelo é o que foi acrescentado.

Executando o código, irei fazer um cadastro e ver se o e-mail chegou.

 

Referência: 1.11

 

 

 

Referência: 1.12

 

Veja que chegou o e-mail em minha caixa postal.

 

 

 

 

 

 

Referência: 1.13

 

Espero que tenham gostado.

Meu nome é Mauricio Junior e estou à disposição para tirar dúvidas.

 

Mauricio Junior

mauricio@ascompras.com