none
Envio de email - erro(Invalid HELO name (See RFC5321 4.1.1.1)). RRS feed

  • Discussão Geral

  • Olá pessoal,

    Minha duvida é a seguinte, no sistema que desenvolvo tem opção de enviar email direto do sistema, como por exemplo email da NFe e arquivos. eu utilizo a seguinte configuração para enviar o email.

    MailMessage mensagemEmail = new MailMessage();
               
    mensagemEmail.To.Add("emailcliente@email.com.br");
    
    mensagemEmail.From = new MailAddress("emailempresa@email.com.br", "Nome Empresa");
    mensagemEmail.Subject = Assunto;
    mensagemEmail.Body = "<pre>" + Mensagem + "</pre>";
    
    mensagemEmail.IsBodyHtml = true;
    
    SmtpClient client = new SmtpClient();
    client.Host = mail.dominio.com.br;
    client.Port = 587;
    client.EnableSsl = False;
    
    //Email do dominio hostgator
    //utilizo essa configuração em todos os clientes
    string Usuario = "Emailpadrao@email.com.br";
    string Senha = "Senha";
    
    NetworkCredential cred = new NetworkCredential(Usuario, Senha);
    client.Credentials = cred;
    client.Send(mensagemEmail);

    Só que o que acontece, na maioria dos clientes funciona normalmente mas em alguns tive problema de retornar este erro(Invalid HELO name (See RFC5321 4.1.1.1)).

    Em alguns testes que fiz para tentar solucionar, se eu colocar esta mesma configuração no outlook 2010 e fazer aquele teste de envio dele resolve o problema no sistema também.

    Preciso descobrir o que o outlook muda na configuração do windows para liberar o envio de email.

    Alguém tem alguma idéia???

    sexta-feira, 17 de novembro de 2017 18:56

Todas as Respostas

  • amigo.

    Eu desenvolvi uma rotina pra envio de e-mails.

    Dentro dessa rotina, coloquei uma subrotina pra fazer a validação dos dados 'ValidarDados', com os parâmetros:

    para quem vai (email), nome da pessoa no corpo do email, assunto do email e o texto do e-mail. 


                public Int16 EnviarEmail(String para, String nome, String assunto, String email)
                {

                    if (validarDados(para, nome, assunto, email) == 0)
                    {
                        try
                        {
                            SmtpClient client = new SmtpClient(cst.smtp, cst.porta);

                            client.Credentials = new NetworkCredential(cst.nome, cst.pwd);
                            client.EnableSsl = true;

                            MailMessage message = new MailMessage();
                            message.Sender = new MailAddress(cst.nome, Mensageiro.Autor);
                            message.From = new MailAddress(cst.nome, Mensageiro.Autor);
                            message.To.Add(new MailAddress(para, nome));
                            message.Subject = assunto;
                            message.Body = email;
                            message.IsBodyHtml = true;

                            client.Send(message);
                            return 0;
                        }
                        catch (Exception)
                        {
                            return 1;
                        }
                    }
                    else return 1;
                }

    os parâmetros que eu utilizei em smtp são:

            public const string smtp = "seu smtp";
            public const int porta = 587;
            public const string nome = "seu email";
            public const string pwd = "sua senha";

    basta substituir pelos seus e fazer o teste.

    Qualquer coisa, me avise.

    abs

    terça-feira, 21 de novembro de 2017 20:35
  • Olá, então a questão nem é validação de dados, o problema é que alguma coisa bloqueia a envio do email dentro do windows.

    tanto que quando eu configuro o mesmo email, mesma conta no outlook ele funciona normal no meu sistema. não retorna erro.

    segunda-feira, 11 de dezembro de 2017 19:07
  • Bom dia Diego.

    Pelo que percebi o problema pode ser de roteamento/firewall.

    Dê uma olhada nesse item https://webx.net/email-error-550-access-denied-invalid-helo-name/

    Abs

    terça-feira, 12 de dezembro de 2017 12:59
  • Boa tarde, então, tbm não é, o problema é algum registro do windows que é alterado quando se configura o e-mail no outlook, pois depois q faz a configuração ele para de dar o erro no envio do sistema.

    Ainda estou pesquisando, não encontrei nada falando sobre.

    quinta-feira, 14 de dezembro de 2017 16:25
  • Olá Diego tudo bem?!

    Alguns servidores de e-mails requerem autenticação via Ssl, favor alterar a propriedade para Enable Ssl para true, e também a propriedade UseDefaultCredentials para True.

    Observei que o servidor de e-mail da hostgator requer Ssl.

    https://suporte.hostgator.com.br/hc/pt-br/articles/115000388034-Configura%C3%A7%C3%B5es-POP3-ou-IMAP-com-SSL 

    Sendo assim realmente você deverá habilitar o Ssl do SmtpClient.


    Se a resposta for relevante ou tenha resolvido seu problema, marque como útil/resposta!

    Rafael Almeida
    Senior Developer C#
    Development Leader at JAMSOFT Informática
    Microsoft Certified Professional
    Criador e Mantenedor do EntityFramework Core for Firebird
    Contribuidor do EntityFramework Core
    Email: ralms@ralms.net
    Blog -  GitHub  -  LinkedIn -  Twitter

    quinta-feira, 14 de dezembro de 2017 16:56
  • Olá Diego, boa tarde.

    Também estou tendo problemas com esse mesmo erro. 

    segunda-feira, 26 de outubro de 2020 15:23
  • eu uso um sistema para recuperação de senhas talvez te ajude.

    class Dados

    //------------------------recupera informações sobre senha Tecnico/Administrador-------------------------------------------------
            /// <summary>
            /// recupera informações sobre senha de um Usuario já criado.
            /// </summary>
            /// <param name="Tecnico"></param>
            /// <returns></returns>
            public string RecuperarSenha(string SenhaRequerida)
            {           
                using (var cmd = new SqlCommand())
                {
                    cmd.Connection = conexao.ObjetConexao;
                    conexao.Conectar();
                    cmd.CommandText = "select *From Tecnicos where Login =@Id_Tc or Email= @email";
                    cmd.Parameters.AddWithValue("@Id_Tc", SenhaRequerida);
                    cmd.Parameters.AddWithValue("@email", SenhaRequerida);
                    cmd.CommandType = CommandType.Text;
                    SqlDataReader reader = cmd.ExecuteReader();
                    if (reader.Read() == true)
                    {
                        string Nome = reader.GetString(3); //+", "+ reader.GetString(2) concatena apelido
            string Email = reader.GetString(5);
            string accountSenha = reader.GetString(2);
    
            var mailServer = new MailServer.SuporteMail();
            mailServer.enviaMail(
                         subject: "SYSTEM:Solicitação de recuperação de senha",
                            body: "Olá, " + Nome + "\nvocê solicitou recuperar sua senha.\n" +
                            "sua senha atual é: " + accountSenha + ", no entanto, \n" +
                            "solicitamos que você altere sua senha imediatamente após entrar no sistema.",
                            recipienteMail: new List<string>
                            {  Email   }
                            );
                        return "Olá, " + Nome + "\nvocê solicitou recuperar sua senha.\n" +
                            "por favor verifique seu e-mail:" + Email + ", no Entanto \n" +
                            "-solicitamos que você altere sua senha imediatamente após entrar no sistema.";
                    }
                    else
                    {
                        conexao.Desconectar();
                        return "Desculpe, não Encontramos uma conta com esse Usuário ou Email de usuário";
                    }
                }
            }

    uma class SuporteMail

    class SuporteMail:MasterMailServer
        {
            public SuporteMail()
            {
                enviarMail = "email@gmail.com";
                Senha = "senha";
                host = "smtp.gmail.com";
                porta = 587;
                ssl = true;
                inicializaSmtpCliente();
            }
        }

    uma class MasterMailServer

     public abstract class MasterMailServer
        {
            private SmtpClient smtpClient;
            protected string enviarMail { get; set; }
            protected string Senha { get; set; }
            protected string host { get; set; }
            protected int porta { get; set; }
            protected bool ssl { get; set; }
    
            protected void inicializaSmtpCliente()
            {
                smtpClient = new SmtpClient();
                smtpClient.Credentials = new NetworkCredential(enviarMail, Senha);
                smtpClient.Host = host;
                smtpClient.Port = porta;
                smtpClient.EnableSsl = ssl;
            }
            public void enviaMail(string subject, string body, List<string> recipienteMail)
            { var mailMessage = new MailMessage();
                try
                {   mailMessage.From = new MailAddress(enviarMail);
                    foreach (string mail in recipienteMail)
                    {
                        mailMessage.To.Add(mail);
                    }
                    mailMessage.Subject = subject;
                    mailMessage.Body = body;
                    mailMessage.Priority = MailPriority.Normal;
                    smtpClient.Send(mailMessage);
                }
                catch (Exception) { }
                finally
                {
                    mailMessage.Dispose();
                    smtpClient.Dispose();
                }
            }
        }
    no form uma TextBox e um Botao e um Label para receber a msg de entrega

    private void btnRecuperaEmail_Click(object sender, EventArgs e)
            {
                var user = new ModeloTecnico();
                var result = user.RecuperarSenha(txtRecuperaSenha.Text);
                lblResultado.Text = result;
            }

    espero que te ajude

    segunda-feira, 26 de outubro de 2020 23:08