Ir ao conteúdo
  • Cadastre-se
igordeagostin

Enviar e-mail pelo C# - Erro

Recommended Posts

Olá galera!

Estou com um problema no meu envio de e-mail que não consegui identificar a causa. Toda vez que eu efetuo um cadastro no meu sistema ele envia um e-mail para o usuário, uso o seguinte método para isso:

 

public void EnviarEmail(string emailResponsavel, string situacao, string nomealuno, DateTime? dataprematricula, string escola, string serie, string observacoes)
        {
            string mensagem = "";
            string assunto = "";
            string orientacoes = "<br/><br/>ORIENTAÇÕES:<br/> Para facilitar o controle das pré-matrículas ela foi dividida em quatro situações, são elas: <b>PRÉ-MATRÍCULADO</b>, <b>ACEITA</b>, <b>REJEITADA</b> e <b>MATRICULADO</b>" +
                "<br/><b>PRÉ-MATRÍCULADO</b>: A pré-matrícula do aluno foi efetuada com sucesso." +
                "<br/><b>ACEITA</b>: A pré-matrícula do aluno foi aceita e o responsável pode se dirigir a escola para efetuar a matrícula." +
                "<br/><b>REJEITADA</b>: A pré-matrícula do aluno foi rejeitada, nesse caso o responsável pode verificar na página das pré-matrículas o motivo da rejeição." +
                "<br/><b>MATRÍCULADO</b>: O aluno foi matrículado com sucesso na escola.";
            if (situacao == "PRÉ-MATRÍCULADO")
            {
                assunto = "Aluno Pré-Matrículado";
                mensagem = ("Prezado(a) Senhor(a)<br/>A pré-matrícula do seu filho(a) foi realizada com sucesso!<br/><br/>Informações:<br/> Nome do aluno: <b>" + nomealuno.ToUpper() +
                    "</b><br/>Data da pré-matrícula: <b>" + dataprematricula + "</b><br/>Escola: <b>" + escola.ToUpper() + "</b><br/>Série: <b>" + serie + "</b>" + orientacoes);
            }
            if (situacao == "REJEITADA")
            {
                assunto = "Pré-matrícula rejeitada";
                mensagem = ("Prezado(a) Senhor(a)<br/>A pré-matrícula do seu filho foi rejeitada, segue abaixo mais informações. <br/><br/>Informações: <br/> Nome do aluno: <b>" + nomealuno.ToUpper() +
                    "</b><br/>Data da pré-matrícula: <b>" + dataprematricula + "</b><br/>Escola: <b>" + escola.ToUpper() + "</b><br/>Série: <b>" + serie + "</b><br/><br/>Motivo da rejeição:<b>" + observacoes.ToUpper() + "</b>" + orientacoes);
            }
            if (situacao == "ACEITA")
            {
                assunto = "Pré-matrícula aceita";
                mensagem = ("Prezado(a) Senhor(a)<br/>A pré-matrícula do seu filho foi aceita. Agora o(a) Sr(a) pode dirigir-se a escola no qual foi aceita e efetuar a matrícula.<br/><br/>Informações: <br/> Nome do aluno: <b>" + nomealuno.ToUpper() +
                    "</b><br/>Data da pré-matrícula: <b>" + dataprematricula + "</b><br/>Escola: <b>" + escola.ToUpper() + "</b><br/>Série: <b>" + serie + "</b>" + orientacoes);
            }

            System.Net.Mail.SmtpClient client = new System.Net.Mail.SmtpClient();
            client.Host = "smtp.gmail.com";
            client.EnableSsl = true;
            client.Credentials = new System.Net.NetworkCredential("email", "senha");
            MailMessage mail = new MailMessage();
            mail.Sender = new System.Net.Mail.MailAddress(emailResponsavel, "ENVIADOR");
            mail.From = new MailAddress("email", "Pré-Matrícula");
            mail.To.Add(new MailAddress(emailResponsavel, "Pré-Matrícula"));
            mail.Subject = assunto;
            mail.Body = mensagem;
            mail.IsBodyHtml = true;
            mail.Priority = MailPriority.High;
            try
            {
                client.Send(mail);
            }
            catch (System.Exception erro)
            {
                //trata erros
            }
            finally
            {
                mail = null;
            }
        }
"Prezado(a) Senhor(a)
<br/>A pré-matrícula do seu filho(a) foi realizada com sucesso!
<br/><br/>
Informações:<br/> Nome do aluno: <b>IGOR LOPES/b><br/>
Data da pré-matrícula:<b>30/05/2017 15:21:53</b><br/>
Escola: <b>EMEF CORREGO DANTA</b><br/>
Série: <b>1º ANO</b><br/><br/>
ORIENTAÇÕES:<br/> Para facilitar o controle das pré-matrículas ela foi dividida em quatro situações, são elas: <b>PRÉ-MATRÍCULADO</b>, <b>ACEITA</b>, <b>REJEITADA</b> e <b>MATRICULADO</b><br/><b>
PRÉ-MATRÍCULADO</b>: A pré-matrícula do aluno foi efetuada com sucesso.<br/><b>
ACEITA</b>: A pré-matrícula do aluno foi aceita e o responsável pode se dirigir a escola para efetuar a matrícula.<br/><b>
REJEITADA</b>: A pré-matrícula do aluno foi rejeitada, nesse caso o responsável pode verificar na página das pré-matrículas o motivo da rejeição.<br/><b>
MATRÍCULADO</b>: O aluno foi matrículado com sucesso na escola."

Acima é o HTML gerado para compor a mensagem do e-mail.

Algumas vezes, quando o usuário recebe o e-mail ele fica da forma do arquivo em anexo.

Não deveria sair desse jeito, deveria ser como especifiquei no html.

Alguém pode me ajudar?

 

 

email.png

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá,

 

Dois anos atras tive uma necessidade parecida e fiz uma dll para meu uso que envia um email com um corpo em HTML.

 

link do projeto: https://github.com/lvlofenix/mandaMail/tree/master/sendMail

talvez isso pode ser útil, observe como fiz a implementação, peço desculpas pois o código está "amador", revisando hoje percebo faria muita coisa diferente, esse foi um dos meus primeiros experimentos na época. 

 

Hoje trabalho com essa implementação em javascript e posso te informar alguns detalhes que aprendi.

 

Vai algumas dicas:

 

1 - Alguns clientes de email "cortam" essa possibilidade como o gmail.com, eles filtram o código e "incapsulam" em suas próprias tags html distorcendo algumas formatações, principalmente se você usar css, para isso é preciso acertar na tentativa e erro. 

 

trabalhe com suas informações dentro das tags

<html> 

<head>

<body>

segue um exemplo de como eu trabalho com um corpo de email em html 

 

1.png.d25f3b38150095881e5fa2229ad90b7c.png

 

Vejo que você adicionou o mail.IsBodyHtml = true; que só isso já deveria funcionar o html in line, seria interessante um teste com BodyFormat = MailFormat.Html;

 

 

1 = https://msdn.microsoft.com/pt-br/library/system.web.mail.mailformat(v=vs.110).aspx

2 = https://stackoverflow.com/questions/1155797/send-a-email-with-a-html-file-as-body-c

 

______

 

Atualização

 

outra forma que você pode tentar é mostrando o anexo no corpo, é muito usado em imagens mas pode ser feito com arquivos .html

 

segue exemplo

 

https://social.msdn.microsoft.com/Forums/pt-BR/929b70bc-418d-4f32-b4cd-5736f0aa254f/envio-de-email-imagem-no-corpo-da-mensagem?forum=vscsharppt

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora





Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas publicações sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×