Jump to content

2 Dia do ACBr

O Dia da Automação Comercial está chegando!
Inscreva-se

Nova Loja Oficial
loja.projetoacbr.com.br
Ajude o projeto a crescer, com estilo

Comprar

Balança SM100 performance surpreendente

Tecnologia Japonesa   Teclado e Visor resistentes a água
Consumo inteligente de etiquetas   Baixo custo de manutenção
Comunicação Ethernet e WIFI independentes

Saiba mais

Impressora de Etiquetas ELGIN - L42 PRO

Protocolos PPLA, PPLB, ZPL, EPL (automático)
Porta USB padrão Opcionais: Ethernet, Serial, Paralela
Sensor de Etiquetas Móvel Garantia de 18 meses

Saiba mais

educms

ACBR Mail e GMAIL - Retorno Ok caindo em exceção

Recommended Posts

Bom dia, estou com a seguinte questão:

Inicio o envio de arquivos pelo ACBR Mail, utilizando o GMAIL e durante o envio, recebo a seguinte exceção:

"SMTP Error: Unable to send Mail data. 250 2.0.0 OK  1562761878 d26sm948820qkl.97 - gsmtp"

Porém, quando verifico na caixa de entrada, o e-mail foi enviado corretamente. Como proceder?

Encontrei a seguinte referência:

"SMTP Status 250 : The mail server has successfully delivered the message! This is the best SMTP reply (250) to receive - your message has been accepted and transmitted OK ! 250 is effectively a status code rather than an error code – there is no such thing as an SMTP error 250."

Share this post


Link to post
Share on other sites
46 minutos atrás, educms disse:

Bom dia, estou com a seguinte questão:

Inicio o envio de arquivos pelo ACBR Mail, utilizando o GMAIL e durante o envio, recebo a seguinte exceção:

"SMTP Error: Unable to send Mail data. 250 2.0.0 OK  1562761878 d26sm948820qkl.97 - gsmtp"

Porém, quando verifico na caixa de entrada, o e-mail foi enviado corretamente. Como proceder?

Encontrei a seguinte referência:

"SMTP Status 250 : The mail server has successfully delivered the message! This is the best SMTP reply (250) to receive - your message has been accepted and transmitted OK ! 250 is effectively a status code rather than an error code – there is no such thing as an SMTP error 250."

Você pode verificar se todos os dados da mensagem foi enviada corretamente? Talvez tenha faltado alguma linha ou character?

Eu verifiquei o código que é na verdade na sua maior parte da Synapse. Me parece que a verificação para o retorno 250 está OK. Veja:

function TSMTPSend.MailData(const Value: Tstrings): Boolean;
(...)
  FSock.SendString('.' + CRLF);
  Result := ReadResult div 100 = 2;
end;

 

  • Like 1

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.

Share this post


Link to post
Share on other sites

Olá @EMBarbosa , verifiquei aqui e a mensagem foi completa. Pode ser por falta de atualização do componente? Esse tratamento foi implementando a pouco tempo? Inclusive as marcações de prioridade estão corretas, anexos corretos, formato HTML da mensagem de acordo com o gerado.

 

Share this post


Link to post
Share on other sites
1 hora atrás, educms disse:

Esse tratamento foi implementando a pouco tempo?

Não... me parece que está há bastante tempo...

1 hora atrás, educms disse:

verifiquei aqui e a mensagem foi completa. Pode ser por falta de atualização do componente?

Acho que não. Talvez você tenha caído em alguma situação que não conseguimos reproduzir. Ou seja algum outro problema.

Você consegue debugar essa parte do código e verificar o que está acontecendo?

Se for possível. Comece pela procedure TACBrMail.SendMail na unit ACBrMail.pas.

  • Like 1

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.

Share this post


Link to post
Share on other sites
16 horas atrás, educms disse:

Sim, assim que eu debugar eu posto o resultado aqui. Muito obrigado!

Deixa eu só me corrigir aqui, porque talvez tenha passado a impressão errada:

Por favor, faça o debug com os componentes atualizados. Assim facilitará para que possamos acompanhar seus testes.

  • Like 1

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.

Share this post


Link to post
Share on other sites

Boa tarde @EMBarbosa, atualizei o componente conforme indicado. Debuguei a procedure e na parte:

  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;

Quando a condicional é satisfeita e entra no SmtpError, o SMTP.ResultString contem a mensagem de erro e realmente retorna a exceção. Porém o e-mail é transmitido corretamente.

Mensagem de erro:

SMTP Error: Unable to send Mail data. 503 5.5.1 MAIL first. g2sm2570158qkf.32 - gsmtp"

 

 

Share this post


Link to post
Share on other sites
16 minutos atrás, educms disse:

Boa tarde @EMBarbosa, atualizei o componente conforme indicado. Debuguei a procedure e na parte:

  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;

Quando a condicional é satisfeita e entra no SmtpError, o SMTP.ResultString contem a mensagem de erro e realmente retorna a exceção. Porém o e-mail é transmitido corretamente.

Oi educms,

  Nesse momento, o erro já aconteceu mesmo... Tem como você verificar o funcionamento da função MailData aí na terceira linha?


[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.

Share this post


Link to post
Share on other sites

Bom dia @EMBarbosa, no debug da função mencionada. Cheguei ao seguinte caminho:

Acompanhando a function TSMTPSend.ReadResult: Integer;, notei que durante o processo de envio os retornos do GMAIL são recebidos corretamente, mais não consegui identificar porque estão caindo nas exceções do ACBRMail.

Porém, notei que abrindo o local variables durante o debug,  recebo como últimos retornos antes da exceção o 250 2.0.0 OK seguido do 503 5.5.1 MAIL first. Sendo que em ambos os casos quando qualquer um dos dois retornos é o ultimo o e-mail é enviado corretamente, mais ao final do processo sempre cai na exceção do componente.  

Estou utilizando o evento OnMailException, pois estou utilizando uma instancia do componente e criando ele em runtime.

Share this post


Link to post
Share on other sites

Ficaria mais fácil se tivéssemos como reproduzir... :(

2 horas atrás, educms disse:

Porém, notei que abrindo o local variables durante o debug,  recebo como últimos retornos antes da exceção 250 2.0.0 OK seguido do 503 5.5.1 MAIL first.

Assumindo que eu entendi como você fez o debug... :)

O retorno 503 é um erro. Na verdade erro de sequência de comandos (veja a RFC). O protocolo SMTP precisa ser seguido na ordem de comunicação estabelecida.

Isso também é o que quer dizer o "Status Code" 5.5.1 (nessa outra RFC)

Citar

"5.xxx.xxx" - Falha permanente

"X.5.1" - comando inválido

Pelo meu entendimento, o servidor deles está aguardando um comando MAIL antes (https://tools.ietf.org/html/rfc5321#section-4.3).

Isso pode explicar o motivo de TSMTPSend.MailData estar retornando false e gerando o exception.

Se na comunicação está detectando essa situação, então está correto em informar que houve erro.

Talvez  algum comando anterior não está sendo feito de maneira correta como o login. Talvez exista mais de um e-mail, ou talvez mais de um endereço na lista CC/BCC e um deles está dando erro.

Não sei se você já tentou, mas pra estabelecer que não é o ambiente:

  • tente com outra conta;
  • Tente com a mesma conta, mas em outra máquina e rede;
  • simplifique o e-mail;
2 horas atrás, educms disse:

Estou utilizando o evento OnMailException, pois estou utilizando uma instancia do componente e criando ele em runtime

Você consegue reproduzir o problema no DEMO? Ou ele só acontece em sua aplicação?

  • Like 2

[]'s

Consultor SAC ACBr

Elton
Ajude o Projeto ACBr crescer - Assine o SAC

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

Um engenheiro de Controle de Qualidade(QA) entra num bar. Pede uma cerveja. Pede zero cervejas.
Pede 99999999 cervejas. Pede -1 cervejas. Pede um jacaré. Pede asdfdhklçkh.

Share this post


Link to post
Share on other sites

Boa tarde @EMBarbosa, o erro está ocorrendo na aplicação. No demo ainda não testei. E o erro ocorre somente com GMAIL, outlook e yahoo não retornam erro algum. Eu já tinha olhado as referencias também. Por isso achei estranho o erro ocorrer e o e-mail chegar corretamente. Vou testar no demo e retorno assim que acabar.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...