Jump to content

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png

click.png click.png click.png

sucsis

Membros Pro
  • Posts

    16
  • Joined

  • Last visited

About sucsis

Recent Profile Visitors

The recent visitors block is disabled and is not being shown to other users.

sucsis's Achievements

Apprentice

Apprentice (3/14)

  • First Post
  • Collaborator Rare
  • Week One Done
  • One Month Later
  • Conversation Starter

Recent Badges

0

Reputation

3

Community Answers

  1. Bom dia, Integramos aqui na empresa há quase 01 mês o ACBrMail para disparo de e-mails de XML/DANFe e boletos, tudo correu bem e o processo funciona normalmente, porém estou tendo problemas para enviar e-mails cujo o destinatário tenha servidor próprio. Exemplo, caso o provedor do destinatário seja Gmail, Yahoo, Outlook etc... o email chega normalmente, porém se o cliente tem um servidor próprio, exemplo [email protected] o sistema envia o e-mail mas em seguida recebo o retorno abaixo: Reporting-MTA: dns; smtp-sp203-40.hospedagem.net X-Postfix-Queue-ID: E343A20050E2 X-Postfix-Sender: rfc822; [email protected] Arrival-Date: Mon, 26 Oct 2020 13:22:32 -0300 (-03) Final-Recipient: rfc822; [email protected] Original-Recipient: rfc822;[email protected] Action: failed Status: 5.0.0 Remote-MTA: dns; mail.maxmusic.com.br Diagnostic-Code: smtp; 550 "The mail server detected your message as spam and has prevented delivery." Alguém já lidou com este problema antes? Algo pode ser feito do ponto de vista do sistema/ACBrMail para evitar este transtorno?
  2. Pessoal, Recentemente passamos a utilizar o componente ACBrLibMail e por ter sido muito útil passamos a estudar a migração também do nosso atual sistema de geração de boletos/remessa/retorno para o ACBrLibBoleto e futuramente pretendemos gerar nossos documentos fiscais com os componentes ACBr. A solução que utilizamos hoje para NFC-e é o Fiscal Manager da Bematech/Totvs que é um aplicativo que fica rodando no SysTray aguardando comandos. A troca de informações acontece via JSON através de uma API, o Fiscal Manager faz toda a gestão para nós, apenas enviamos os dados/valores, ele por sua vez gera o XML, transmite e faz o controle de contingência. Por exemplo, se no momento da transmissão o sefaz estiver fora, computador estiver sem internet ou ocorrer qualquer problema de comunicação, automaticamente ele entra em contingência, faz a emissão e quando o servidor/internet volta, ele automaticamente autoriza. Percebi que o ACBrMonitor Plus tem semelhanças, porém estou em dúvida se ele tem todas essas automatizações? Ou teremos que trabalhar de forma mais manual? O que o ACBrMonitor efetivamente faz com relação a NFCe? Desde já, agradeço!
  3. No Outlook, após algum tempo ao logar ele me solicitou confirmar o número de celular, a partir daí o envio começou a funcionar. No Yahoo não aconteceu isso, mas passou a funcionar sozinho também.
  4. Bom dia, Consegui implementar com sucesso a integração do sistema com o ACBrMail, consegui enviar os emails através do SMTP Gmail e também do SMTP oficial da própria empresa, porém esta solução também vai pro cliente e normalmente eles costumam usar Gmail, Hotmail/Outlook, Yahoo, mas não obtive sucesso no envio com relação aos dois últimos, sendo que tentei de diversas formas Observação 01: Usar outro tipo de serviço como o SparkPost e similares não é uma possibilidade. Observação 02: Verifiquei que Yahoo e Outlook trabalham com um tal de "STARTTLS", mas não sei se tem haver com isto. Observação 03: Com relação ao Yahoo, não foi utilizado a senha padrão do e-mail, mas sim aquela que gerada através do painel de configurações, conforme orientações aqui do próprio fórum Observação 04: No Gmail utilizei a porta 465 e SSL Configuração de envio Outlook // Configurações MAIL_Inicializar("smtpCfg.ini","") MAIL_ConfigGravaValor("Email","Nome","Nome Teste") MAIL_ConfigGravaValor("Email","Servidor","smtp.office365.com") MAIL_ConfigGravaValor("Email","Conta","[email protected]") MAIL_ConfigGravaValor("Email","Usuario","[email protected]") MAIL_ConfigGravaValor("Email","Senha","minhaSenha") MAIL_ConfigGravaValor("Email","Porta","587") MAIL_ConfigGravaValor("Email","SSL","0") MAIL_ConfigGravaValor("Email","TLS","1") MAIL_ConfigGravaValor("Email","IsHTML","1") MAIL_GraCfg("smtpCfg.ini") Configuração de envio Yahoo // Configurações MAIL_Inicializar("smtpCfg.ini","") MAIL_ConfigGravaValor("Email","Nome","Nome Teste") MAIL_ConfigGravaValor("Email","Servidor","smtp.mail.yahoo.com") MAIL_ConfigGravaValor("Email","Conta","[email protected]") MAIL_ConfigGravaValor("Email","Usuario","[email protected]") MAIL_ConfigGravaValor("Email","Senha","minhaSenha") // esta senha do YAHOO foi gerada pelo painel de configurações, conforme instrução do próprio Fórum MAIL_ConfigGravaValor("Email","Porta","587") MAIL_ConfigGravaValor("Email","SSL","0") MAIL_ConfigGravaValor("Email","TLS","1") MAIL_ConfigGravaValor("Email","IsHTML","1") MAIL_GraCfg("smtpCfg.ini") Rotina de envio // Envio Local vBuffer:=Space(256),; nBufferLen:=256 MAIL_AddReplyTo("Nome Teste","[email protected]") MAIL_AddAddress("[email protected]","Destinario Qualquer") MAIL_SetSubject("Um Simples Email de Testes") MAIL_AddBody("Este é o corpo da mensagem") If MAIL_Send(0) != 0 MAIL_UltRet(@vBuffer,@nBufferLen) MemoWrit("logACBr.txt", vBuffer) EndIf Log com o resultado Erro ao tentar enviar pelo SMTP do outlook/hotmail: SMTP Error: Unable to send MailFrom.530 5.7.57; Client was not authenticated to send anonymous mail during MAIL FROM [CP2PR80CA0109.lamprd80.prod.outlook.com Erro ao tentar enviar pelo Yahoo: SMTP Error: Unable to send MailFrom Tentei enviar de outras forma, alterando portas e ativando/desativando SSL e TLS. Alguém aí já teve este tipo de problema? Alguém hoje em dia utiliza o ACBrMail com o Yahoo ou Outlook?
  5. Consegui resolver. O problema em questão tem haver com as declarações mas não com os tipos propriamente ditos. Tanto na declaração quanto na chamada da função, é necessário informar que o argumento deve ser enviado como referência, simplesmente adicionando um "@" antes do nome do parâmetro, da seguinte forma: DLL32 Function MAIL_UltimoRetorno(@vMsgRet AS STRING, @vTamBuf AS _INT) AS _INT PASCAL FROM "MAIL_UltimoRetorno" LIB xDllMail Observação: Acredito que a classe disponibilizada nos fontes funcione somente para Harbour e não para xHarbour Comercial, se possível alguém poderia realizar este teste para verificar. Pois realmente tentei utilizá-la e sem modificar as chamadas das funções nada funciona.
  6. Rafael, eu tentei usar a classe, mas simplesmente não funciona. Tentei inclusive extrair o carregamento e a chamada das funções da própria classe e também não funciona. Vou alterar as declarações, mas a princípio a própria documentação da ACBrLib informa que tanto o retorno quanto o segundo parâmetro é um "Integer". Com relação a tipagem dos parâmetros, os tipos não são do Harbour prorpiamente dito, mas sim do C. Vou usar o tipo "LPSTR" que é equivalente a um ponteiro para string em C para ver se funciona.
  7. Bom dia, Estou utilizando a DLL ACBrMail32.dll para envio de e-mails, tudo funciona conforme esperado com exceção das funções que retornam strings, tais como MAIL_Nome(), MAIL_Versao() e MAIL_UltimoRetorno(). Elas retornam -10 indicando que houve falha na execução do método, além disso os parâmetros passados por referência não retornam com nenhuma informação. Estou utilizando a linguagem xHarbour (comercial), as funções da DLL foram declaradas da seguinte forma: xDllMail:=LoadLib32("ACBrMail32.dll") DLL32 Function MAIL_UltimoRetorno(vMsgRet AS STRING, vTamBuf AS _INT) AS _INT PASCAL FROM "MAIL_UltimoRetorno" LIB xDllMail DLL32 Function MAIL_Nome(vMsgRet AS STRING, vTamBuf AS _INT) AS _INT PASCAL FROM "MAIL_Nome" LIB xDllMail A chamadas foram feitas de seguinte forma (após MAIL_Inicializar(), etc...) // Verifica último retorno nRetorno := 0 vArqLog:="C:\logACBr.txt" vLog := "" nBufferLen := 256 vBuffer := Space(nBufferLen) nRetorno := MAIL_UltimoRetorno(@vBuffer, @nBufferLen) vLog+="Tamanho do buffer..: " + Str(nBufferLen) vLog+="Conteúdo do buffer.: " + vBuffer vLog+="Retorno da função..: " + Str(nRetorno) MemoWrit(vArqLog, vLog) Saída do log fica Tamanho do buffer..: 256 Conteúdo do buffer.: Retorno da função..: -10 Observação 01: se eu substituir MAIL_UltimoRetorno por MAIL_Nome() ou MAIL_Versao() a saída do log continua a mesma... Observação 02: Os demais métodos tais como MAIL_ConfigGravaValor(), MAIL_AddAddress(), MAIL_Send() funciona perfeitamente
  8. Bom dia Rafael, Obrigado pelo empenho em tentar ajudar, a constante referida está sim no arquivo ACBrLib.ch, eu baixei junto com a classe ACBrMail e linkei na aplicação, infelizmente não foi possível utilizá-la. Conforme expus na resposta anterior, consegui fazer a DLL funcionar compartilhando a mesma instância da DLL entre as chamadas das funções, carregando a DLL no inicio do .PRG com LoadLib32() e declarando as funções no final do PRG referindo a instância retornada por LoadLib32(). Com relação ao DllPrepareCall(), ela fazia o processo todo funcionar pois ela instanciava a DLL e a mantinha na memória, fazendo com que as chamadas subsequentes fossem realizadas do mesmo objeto.
  9. Atualização Depois de passar a tarde inteira tentando, descobri que o funcionamento da DLL é por instância, fazendo com que a forma tradicional de declaração não funcionasse como o esperado. Exemplo: DLL32 Function MAIL_Finalizar() AS _INT PASCAL FROM "MAIL_Finalizar" LIB "ACBrMail32.DLL" O código acima funcionará no sentido de expor esta função da DLL para sua aplicação, porém para cada função que você chamar, estará fazendo de um objeto diferente, assim as funções não funcionará adequadamente. A Solução? Simples, no início do PRG criei uma variável global chamada xDllMail e atribuí para ela o handle da DLL carregada na memória, dessa forma: Public xDllMail := LoadLib32("ACBrMail32.DLL") No final do PRG, na declaração das funções, em vez de colocar LIB "ACBrMail32.DLL" coloquei LIB xDllMail, ficando a declaração das funções da seguinte forma: DLL32 Function MAIL_Finalizar() AS _INT PASCAL FROM "MAIL_Finalizar" LIB xDllMail Dessa forma, todas as funções foram declaradas a partir da mesma instância, fazendo a DLL funcionar corretamente. Sobre o método Send() retornando -10, constatei que a senha estava gravada sem a criptografia, pois eu a inseri manualmente no arquivo .INI. Para funcionar a adequadamente, no código utilizei MAIL_ConfigGravarValor("Email","Senha","minhaSenha") MAIL_ConfigGravar("C:\config.ini") Dessa forma, a senha será gravada no arquivo .INI com a criptografia, fazendo tudo funcionar corretamente. Após isso, consegui enviar emails normalmente. Amanhã farei mais testes, se tudo correr bem encerrarei este tópico.
  10. Consegui fazer as funções darem o retorno correto adicionando a seguinte linha antes de chamar as função da DLL DllPrepareCall("ACBrMail32.dll", 0x0010, "MAIL_Inicializar") Nãos sei por que, mas só funciona assim. Porém estou com outro problema, o método MAIL_Send() sempre retorna -10. Obs: não é configuração de email pois com a forma de envio anterior do sistema está enviando normalmente...
  11. Depurando aqui, verifiquei que hResult := CalDll sempre retorna vazio
  12. Boa tarde, Fiz o teste usando a classe. Não é possível nem instanciar, pois da erro de execução Comentei algumas linhas para conseguir instanciar, mas ao tentar chamar mail:Nome() e mail:Versao() simplesmente não retorna nada... Engraçado é que fiz um teste na linguagem C# e consegui chamar as funções normalmente, as mesmas retornaram 0 conforme esperado Mas não estou conseguindo fazê-las funcionar no xHarbour de maneira alguma... Quanto a declaração das DLLs, usamos várias outras DLL's aqui (FlexDocs, MySql Elgin) e sempre declaramos assim...
  13. Baixei a DLL no dia 02/10, no fórum, área de downloads consta que a atualização é do dia 14/09
  14. O PRG está da seguinte forma /* * Funções do ACBrMail */ DLL32 Function MAIL_Inicializar (vArqCfg AS STRING,; vChvCri AS STRING) AS _INT PASCAL FROM "MAIL_Inicializar" LIB "ACBrMail32.DLL" DLL32 Function MAIL_Finalizar ( ) AS _INT PASCAL FROM "MAIL_Finalizar" LIB "ACBrMail32.DLL" DLL32 Function MAIL_Clear ( ) AS LONG PASCAL FROM "MAIL_Clear" LIB "ACBrMail32.DLL" DLL32 Function MAIL_SetSubject (vSubJct AS STRING) AS _INT PASCAL FROM "MAIL_SetSubject" LIB "ACBrMail32.DLL" DLL32 Function MAIL_AddAddress (vEmaDes AS STRING,; vNomDes AS STRING) AS _INT PASCAL FROM "MAIL_AddAddress" LIB "ACBrMail32.DLL" DLL32 Function MAIL_AddReplyTo (vEmaRem AS STRING,; vNomRem AS STRING) AS _INT PASCAL FROM "MAIL_AddReplyTo" LIB "ACBrMail32.DLL" DLL32 Function MAIL_AddCC (vEmaCop AS STRING,; vNomCop AS STRING) AS _INT PASCAL FROM "MAIL_AddCC" LIB "ACBrMail32.DLL" DLL32 Function MAIL_AddBCC (vEmaCop AS STRING) AS _INT PASCAL FROM "MAIL_AddBCC" LIB "ACBrMail32.DLL" DLL32 Function MAIL_AddBody (vTxtBod AS STRING) AS _INT PASCAL FROM "MAIL_AddBody" LIB "ACBrMail32.DLL" DLL32 Function MAIL_AddAltBody (vAltBod AS STRING) AS _INT PASCAL FROM "MAIL_AddAltBody" LIB "ACBrMail32.DLL" DLL32 Function MAIL_ClearAttachment ( ) AS _INT PASCAL FROM "MAIL_ClearAttachment" LIB "ACBrMail32.DLL" DLL32 Function MAIL_AddAttachment (vCamArq AS STRING,; vDscArq AS STRING,; nDisAnx AS _INT ) AS _INT PASCAL FROM "MAIL_AddAttachment" LIB "ACBrMail32.DLL" DLL32 Function MAIL_Send (nUseThd AS _INT ) AS _INT PASCAL FROM "MAIL_Send" LIB "ACBrMail32.DLL" DLL32 Function MAIL_SaveToFile (vArqSav AS STRING) AS _INT PASCAL FROM "MAIL_SaveToFile" LIB "ACBrMail32.DLL" /* * Função para testar o envio de email */ Function TestarAcbr() Local vConteudoLog:="",vArquivoLog:="C:\logAcbr.txt",; nLogIni:=nLogClear:=nLogAddDest:=nLogAddr:=nLogRem:=nLogSub:=nLogBod:=nLogBod2:=nLogSend:=nlogFim:=0 nLogIni := MAIL_Inicializar("C:\config.ini","") nLogClear := MAIL_Clear() nLogAddr := MAIL_AddAddress("[email protected]") nLogRem := MAIL_AddReplyTo("[email protected]") nLogSub := MAIL_SetSubject("Assunto de Teste") nLogBod := MAIL_AddBody("Corpo do Email teste") nLogBod2 := MAIL_AddAltBody("Corpo do Email Alternativo") nLogSend := MAIL_Send(0) nlogFim := MAIL_Finalizar() vConteudoLog+="=================[ACBR MAIL LOG]================="+Chr(13) vConteudoLog+="MAIL_Inicializar...........: "+Str(nLogIni)+Chr(13) vConteudoLog+="MAIL_Clear.................: "+Str(nLogClear)+Chr(13) vConteudoLog+="MAIL_AddAddress............: "+Str(nLogAddr)+Chr(13) vConteudoLog+="MAIL_AddReplyTo............: "+Str(nLogRem)+Chr(13) vConteudoLog+="MAIL_SetSubject............: "+Str(nLogSub)+Chr(13) vConteudoLog+="MAIL_AddBody...............: "+Str(nLogBod)+Chr(13) vConteudoLog+="MAIL_AddAltBody............: "+Str(nLogBod2)+Chr(13) vConteudoLog+="MAIL_Send..................: "+Str(nLogSend)+Chr(13)+Chr(13) vConteudoLog+="MAIL_Fianlizar.............: "+Str(nlogFim)+Chr(13)+Chr(13) MemoWrit(vArquivoLog,vConteudoLog) Return(.T.) Ao chamar a função TestarAcbr() a seguinte saída e produzida =================[ACBR MAIL LOG]================= MAIL_Inicializar...........: 0 MAIL_Clear.................: -1 MAIL_AddAddress............: -1 MAIL_AddReplyTo............: -1 MAIL_SetSubject............: -1 MAIL_AddBody...............: -1 MAIL_AddAltBody............: -1 MAIL_Send..................: -1 MAIL_Finalizar.............: 0 Perceba que a função de inicializar e e finalizar funciona, dando o retorno esperando, porém as demais retornam -1. Obs, o arquivo de configuração config.ini está devidamente configurado e com os dados corretos...
  15. Bom dia, estou utilizando a linguagem xHarbour (temos costume aqui de utilizar várias outras DLLs). Estou num SO de 64 bits, porém o sistema é de 32 bits, peguei a DLL dessa arquitetura, convneção de chamada StdCall. Exemplo de como foi declarado a função da DLL: DLL32 Function MAIL_Inicializar(vArqCfg AS STRING, vChvCri AS STRING) AS _INT PASCAL FROM "MAIL_Inicializar" LIB "ACBrMail32.DLL" Vou fazer o teste no DEMO...
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.