Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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

  • Moderadores
Postado

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
Postado

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

Postado

Se você rodar esse SQL direto no banco, todos os campos são retornados para a empresa dessa nota fiscal?

Sim, todos os campos tem valor. Nenhum deles é null.

Carlos Alexandre Heidrich

Programador e Técnico em Informática

Postado

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

Postado

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

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

The popup will be closed in 10 segundos...