Ir ao conteúdo
  • Cadastre-se

Enviar e-mail pelo C# - Erro


Posts recomendados

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

Link para o comentário
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

 

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades 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

×
×
  • Criar novo...