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.
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.
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.
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.