Ir para conteúdo
  • Cadastre-se

dev botao

Erro ao enviar e-mail [RESOLVIDO]


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

Recommended Posts

Olá.

Estou tentando mandar e-mail com o componente ACBr mas ocorre um erro quando vou envia-lo:

First chance exception at $76D6FBAE. Exception class EAccessViolation with message 'Access violation at address 614D6567. Write of address 614D6567'. Process xxxxxxxxxx.exe (3608)

Em anexo segue o print no Delphi.

post-1451-13548987543279.png

Acredito que o erro ocorre por que o Create do StreamNFE está sendo passado em branco(Circulei em vermelho) Creio que ali deva ser passado alguma coisa. O sistema para na linha 289 "SaveToStream(StreamNFE);"

Desde ja agradeço a ajuda...

Carlos Alexandre Heidrich

Programador e Técnico em Informática

Link para o comentário
Compartilhar em outros sites

  • Moderadores

Se você der uma olhada no código do método Create do TStringStream verá que ele aceita a passagem em branco normalmente, inclusive ele possuiu um sobrecarregamento que faz isso.

O que deve estar ocorrendo ai é outra coisa, como você está chamando o método? quais parâmetros você está passando? Poste sua rotina de envio por favor.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

Segue abaixo a rotina que faço pra mandar o e-mail:

procedure TLanNotasSaida.EnviarEmailXML;

var

   Host, Porta, Usuario, Senha, From: String;

   Mensagem: TMemo;

   Autentica: Boolean;

begin

    if cdsNotasSaidaEMAIL_DESTINATARIO.AsString > '' then

      begin

          case TfrmMsg.Msg('Confirmação', 'Deseja enviar o e-mail com o arquivo XML para o cliente?', imPergunta, [mbNao, mbSim]) of

            1: Abort;

          end;


          SQLLinha('SELECT EMPRESAS_PARAMETROS.HOST_EMAIL_NFE, ' +

                   '       EMPRESAS_PARAMETROS.PORTA_EMAIL_NFE, ' +

                   '       EMPRESAS_PARAMETROS.USUARIO_EMAIL_NFE, ' +

                   '       EMPRESAS_PARAMETROS.SENHA_EMAIL_NFE, ' +

                   '       EMPRESAS_PARAMETROS.FROM_EMAIL_NFE, ' +

                   '       EMPRESAS_PARAMETROS.MENSAGEM_EMAIL_NFE, ' +

                   '       EMPRESAS_PARAMETROS.AUTENTICA_SSL_EMAIL_NFE ' +

                   'FROM EMPRESAS_PARAMETROS ' +

                   'WHERE EMPRESAS_PARAMETROS.ID_EMPRESA = ' + cdsNotasSaidaID_EMPRESA.AsString);


          Host := dmLookUp.Procura.FieldByName('HOST_EMAIL_NFE').AsString;

          Porta := dmLookUp.Procura.FieldByName('PORTA_EMAIL_NFE').AsString;

          Usuario := dmLookUp.Procura.FieldByName('USUARIO_EMAIL_NFE').AsString;

          Senha := dmLookUp.Procura.FieldByName('SENHA_EMAIL_NFE').AsString;

          From := dmLookUp.Procura.FieldByName('FROM_EMAIL_NFE').AsString;

          Mensagem.Text := dmLookUp.Procura.FieldByName('MENSAGEM_EMAIL_NFE').AsString;

          Autentica := dmLookUp.Procura.FieldByName('AUTENTICA_SSL_EMAIL_NFE').AsString = 'SIM';


          try

             ACBrNFe.NotasFiscais.Items[0].EnviarEmail(Host, Porta, Usuario, Senha, From, cdsNotasSaidaEMAIL_DESTINATARIO.AsString, 'Nota fiscal ' + cdsNotasSaidaNUMERO_NOTA.AsString, Mensagem.Lines, Autentica);

          except

             on E: Exception do

               begin

                   TfrmMsg.Msg('Erro ao enviar o XML e PDF', E.Message, imErro, [mbOk]);

                   Abort;

               end;

          end;


          Application.ProcessMessages;


          TfrmMsg.Msg('Confirmacao', 'E-Mail enviado com sucesso!', imInformacao, [mbOk]);

      end;

end;

Carlos Alexandre Heidrich

Programador e Técnico em Informática

Link para o comentário
Compartilhar em outros sites

Você tentou debugar passo-a-passo? Pergunto porque aqui está funcionando corretamente.

Olha só, fiz um novo debug e constatei que o erro não ocorre na linha 289 e sim na linha 288

p := m.AddPartMultipart('mixed', nil);

    if sMensagem <> nil then                 //Linha 287

       m.AddPartText(sMensagem, p);    //Linha 288

    SaveToStream(StreamNFe) ;            //Linha 289

    m.AddPartBinary(StreamNFe,copy(NFe.infNFe.ID, (length(NFe.infNFe.ID)-44)+1, 44)+'-NFe.xml', p);

E também reparei que o parametro sMensagem não está "Salvando" os dados que ele recebe. No Local Variables o Delphi exibe a frase "E2171 Variable 'sMensagem' inaccessible here due to optimization" quando deveria mostra "TESTE DA NFE", que é o que estou passando para o parâmetro.

Acompanhei a funtion "m.AddPartText(sMensagem, p);" e vi que no arquivo mimemess.pas, a linha 622 (Value.SaveToStream(DecodedLines);) é que causa o erro.

Carlos Alexandre Heidrich

Programador e Técnico em Informática

Link para o comentário
Compartilhar em outros sites

  • Moderadores

no teu código a declaração da variável "Mensagem: TMemo;" que você utiliza para guardar o texto da mensagem do e-mail, onde você inicializou ou criou ela? Neste código que você enviou não tem a criação da variável somente a utilização.

Equipe ACBr

Régys Borges da Silveira

http://www.regys.com.br

certificacao delphicertificacao delphi
Link para o comentário
Compartilhar em outros sites

no teu código a declaração da variável "Mensagem: TMemo;" que você utiliza para guardar o texto da mensagem do e-mail, onde você inicializou ou criou ela? Neste código que você enviou não tem a criação da variável somente a utilização.

Putz!!! Que vergonha... :oops::oops::oops::oops::oops::oops::oops::oops:

Depois dessa fui rebaixado a programador cabaço.... :(:lol::lol::lol:

Tava tão atucanado que nem me dei em conta da gafe. Desculpa pelo encomodo. Agora está funcionando sem problemas. Obrigado.

Carlos Alexandre Heidrich

Programador e Técnico em Informática

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 4630 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.