Ir para conteúdo
  • Cadastre-se

dev botao

Bug detectado em ACBrMail


ArbSis
Ver Solução Respondido por Daniel Simoes,
  • Este tópico foi criado há 1509 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

  • Membros Pro

Bom Dia a todos... quebrando a cabeça aqui há várias horas hehe...

Cenário, após atualizar o cliente o envio de e-mails para de funcionar com a msg: SMTP Error: Unable to send Mail data.

Começa a corrida contra o tempo, vamos achar o erro nos códigos-fontes do nosso sistema, hehe, achei um erro que nem deveria existir, mas não era a causa do problema.

Olhando um tópico que o Daniel respondeu, fui para o testador, coloquei meus dados reais e o meu foi enviado com sucesso... Nesse ponto fiquei mais cabrero ainda, hehe.

Reproduzi o mesmo cenário, usando o e-mail que ocasionou o erro e recebo a mesma msg de erro acima. Deduzi que o e-mail usado no teste não existe e realmente não existe.

Entretanto, o ACBrMail só mostra a msg de erro acima, que não nos diz nada, debugando consegui descobrir que o erro correto é 525 5.7.13 <END-OF-MESSAGE>: End-of-data rejected: Este remetente [email protected] nao tem permissao para enviar e-mails. Confirme o uso deste remetente em https://smptlw.com.br/panel/settings

Fiquei mais cabrero ainda, pois na classe ACBrMail.SendMail no bloco:

  for vAttempts := 1 to fAttempts do
  begin
    if fSMTP.MailData(fMIMEMess.Lines) then
      Break;

    if vAttempts >= fAttempts then
      SmtpError('SMTP Error: Unable to send Mail data.' + sLineBreak + SMTP.ResultString);
  end;

Em SmtpError ele concatena com a msg de erro para lançar a exceção completa, mas isso não estava acontecendo. Debugando e conferindo o conteúdo de SMTP.ResultString percebo que a msg de erro completa aparece na primeira iteração do FOR, na segunda e terceira iterações a msg completa não aparece e temos um retorno Vazio. Isso por que minha propriedade Attempts (tentativas) = 3.

Em TSMTPSend.ReadResult ele limpa a lista FFullResult.Clear onde estava armazenado o erro na primeira iteração.

Quando o método TSMTPSend.MailData é chamado na segunda iteração, a primeira coisa que acontece é if ReadResult <> 354 then Exit; com isso nada do método é executado e nossa msg de erro é apagada.

Por enquanto, para poder ver a msg de erro completa, coloquem Attemp = 1.

Estou com pouco tempo para poder colaborar, se alguém puder mexer para corrigir, posso inclusive passar as configurações para reproduzir esse erro, incluindo nosso servidor de envio e-mail, por um período de tempo estipulado. Caso contrário, deixarei pendente para eu poder revisar em breve.

P.S. qual o motivo dos erros serem propagados em Inglês? Pergunto isso, pois assustamos os usuários ao mostrar mensagens de erro em Inglês.

Editado por ArbSis
  • Curtir 1

Anderson Rogerio Bejatto

Bacharel em Sistemas de Informação, Londrina - Paraná, www.saac.com.br

Colaborador e Assinante ACBrPro do Projeto ACBr - Automação Comercial Brasil

Link para o comentário
Compartilhar em outros sites

  • Fundadores
6 horas atrás, ArbSis disse:

P.S. qual o motivo dos erros serem propagados em Inglês? Pergunto isso, pois assustamos os usuários ao mostrar mensagens de erro em Inglês.

O erro vem do próprio Servidor SMTP... você pode tratar na sua aplicação...

Já preparei um possível ajuste, para exibir todos os erros...

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Membros Pro

Show de Bola Daniel... Tem previsão pra submeter?

Com relação ao Inglês, eu me referi aos métodos classe a exemplo SmtpError('SMTP Error: Unable to send Mail data.' + esse trecho é do componente.

Anderson Rogerio Bejatto

Bacharel em Sistemas de Informação, Londrina - Paraná, www.saac.com.br

Colaborador e Assinante ACBrPro do Projeto ACBr - Automação Comercial Brasil

Link para o comentário
Compartilhar em outros sites

  • Fundadores
1 hora atrás, ArbSis disse:

Com relação ao Inglês, eu me referi aos métodos classe a exemplo SmtpError('SMTP Error: Unable to send Mail data.' + esse trecho é do componente.

Ahh sim.. optamos dessa maneira, pois a msg do SMTP, sempre virá em Inglês... mas mesmo assim dá pra capturar na aplicação...

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Fundadores
  • Solution
Citar

-- ACBrMail --
[*] Diversas modificações em "BuildMimeMess", para permitir o Encoding correto
    em diversas plataforma e sem a dependência da libIconv
[*] EncodeParts modificados para usar Base64
[+] Melhoria para exibir todos os erros de SMTP, quando o componente está
    configurado, para várias tentativas
    https://www.projetoacbr.com.br/forum/topic/56158-bug-detectado-em-acbrmail/

Commit [r19036]

  • Obrigado 2
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 1509 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

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
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.