Página 4 de 7

Email pelo Xharbour

Enviado: 15 Jan 2018 10:21
por Daniel
Acho que voce esta usando o comando WITH errado

Código: Selecionar todos

WITH OBJECT oMsg
                :MDNRequested = .T.
                :Configuration = oCfg
                :From = cFrom
                :To = aTo[i]
                :CC = aCC
                :BCC = aBCC
                :Subject = cSubject
                :Sender = cdpar000->fantasia
                :ReplyTo = cFrom
                :Organization = cdpar000->razao
                if !uso
                   cMsg = strtran( cMsg, chr(13)+chr(10) , '<br>' )
                   :HTMLBody = "<h3>"+cMsg+"</h3>"
                else
					    :TextBody = cMsg
				    endif		    
                For x := 1 To Len( aFiles )
                    :AddAttachment(AllTrim(aFiles[x]))
                Next
                IF vEMAIL_CONF
                   :Fields("urn:schemas:mailheader:disposition-notification-to"):Value:= cFrom
                   :Fields("urn:schemas:mailheader:return-receipt-to"):Value:= cFrom
                ENDIF
                :Fields:update()
                :Send()
           END WITH

Email pelo Xharbour

Enviado: 15 Jan 2018 10:54
por alaminojunior
Daniel, pode até ser, mas tem funcionado assim há uns 10 anos.
Poderia apontar o que achou estranho ?

Obrigado !

Email pelo Xharbour

Enviado: 15 Jan 2018 11:07
por JoséQuintas
TÁ TUDO ERRADO!!!!!

Começou dizendo que foi a mesma mensagem de erro do post.
O ponto principal é: QUAL FOI A MENSAGEM DE ERRO?

Muito provavelmente é uma questão já muito falada no fórum, que dependendo da LIB gráfica o XHarbour funciona de um jeito.

OLE é o uso de recursos existentes no Windows, usando um tipo de ligação entre o programa e o recurso do Windows.

No Harbour isso é feito usando win_OleCreateObject().
No XHarbour depende da LIB gráfica, pode ser CreateObject(), TOleAuto(), xhb_CreateObject(), ou outra coisa diferente que inventaram.
O erro não é na linha da função, o erro é na hora do uso do OLE, dependendo do que está sendo usado, geralmente no Send().

Email pelo Xharbour

Enviado: 15 Jan 2018 11:38
por alaminojunior
No XHarbour depende da LIB gráfica, pode ser CreateObject(), TOleAuto(), xhb_CreateObject(), ou outra coisa diferente que inventaram.
O erro não é na linha da função, o erro é na hora do uso do OLE, dependendo do que está sendo usado, geralmente no Send().
Na HwGui salvo engano meu (pois já procurei) não existe equivalente, e com isso assumo que está usando a que vem nos fontes do xHarbour.

E minhas rotinas de e-mail tem funcionado normalmente.

Email pelo Xharbour

Enviado: 15 Jan 2018 12:19
por JoséQuintas
Acho que voce esta usando o comando WITH errado
Daniel, o WITH OBJECT até está inútil, mas funciona mesmo assim.

Volto ao que postei:
QUAL A MENSAGEM DE ERRO?

Email pelo Xharbour

Enviado: 15 Jan 2018 12:39
por Daniel
Quintas
A minha observação seria só sobre o WITH Objeto mesmo
que com ele ou sem funciona do mesmo jeito

Email pelo Xharbour

Enviado: 15 Jan 2018 22:14
por Shark
Tenho tentado usar estes códigos para enviar email mas recebo este erro:

Error description: Error CDO.Message/3 DISP_E_MEMBERNOTFOUND: SEND

Stack Calls
===========
Called from: => TOLEAUTO:SEND( 0 )
Called from: GMAIL.prg => MAIN( 27 )

Email pelo Xharbour

Enviado: 15 Jan 2018 23:11
por alaminojunior
Provedores como Gmail, Yahoo entre outros, exigem que você ative no painel de controle da sua conta o recurso de fazer login a partir de aplicativos menos seguros.

Faça isso.

Email pelo Xharbour

Enviado: 16 Jan 2018 23:32
por rochinha
Amiguinhos,

Editei meu post várias vezes e ainda deixei erros.

Vamos lá:
alaminojunior
Se você usa o objeto CDO para o envio dos emails a contento isso é boa notícia.

shark
Eu coloquei em meu sistemas vários motores de envio, alguns já ficaram obsoletos, mas a codificação ficou lá. Não deu ainda para podar e deixar um único.

Eu uso o blat.exe via command line(quando o prompt permite), mas algumas vezes uso a blat.dll via OLE.

O problema do Blat é que no caso do Gmail, o servidor SMTP necessita autenticação via SSL na porta 465 ou 587 como podem ver na página de ajuda do Google. Por isso utilizamos o programa, também grátis chamado Stunnel que ajuda o Blat a encaminhar o email de forma segura utilizando SSL na porta smtp do Gmail.

Para ele funcionar é necessário instalar o stunnel(https://www.stunnel.org/?page=downloads). Mas como você falou, tem de mexer nas entranhas do pc do usuário.

Outro dia encontrei o SwithMail.exe. Se digitar no Google dá pra encontrar já que não gravei o site.

Linha de comando:

Código: Selecionar todos

SwithMail.exe /s /b corpo.txt /a "C:\SISTEMA\REMESSA\NFE110110*.ZIP" /Server smtp.gmail.com /ssl /p 587 /to irochinha@hotmail.com.br /sub "Arquivos da Nota Fiscal Eletronica - Carta de Correcao" /from meuemail@gmail.com /name meuemail@gmail.com /pass minhasenha$321
Se você digitar somente SwithMail.exe uma tela de configuração aparecerá e poderá ser feita a configuração e salva em XML.

A partir daí poderá ser chamado via linha de comando. Procure por exemplos.

Email pelo Xharbour

Enviado: 17 Jan 2018 00:39
por Shark
Dei uma lida nas especificações do SwithMail e no que ele se propõem a fazer Rochinha.

Caso não consiga efetivamente usar funções nativas e códigos xharbour para a tarefa, vou apelar pra esse programa externo aí mesmo.

O que me causa estranheza, é uma funcionalidade tão básica como enviar um simples email, demonstrar-se inexplicavelmente assim: tão complexa e anti funcional.

Acho que deveria existir uma função tipo SendMail( cFrom, cText, aFiles )

Apenas isso enviaria a porcaria do email. Como? usando uma conta default provida pela linguagem. Tipo: se o programador não informar o email, usa-se essa conta default e o email chega no destino assim mesmo.

É uma pena isso não existir.

Me pego a imaginar: se pra enviar um email é essa novela todo, como será receber?

Email pelo Xharbour

Enviado: 17 Jan 2018 09:46
por JoséQuintas
Error description: Error CDO.Message/3 DISP_E_MEMBERNOTFOUND: SEND
Isso significa que não existe Send() no objeto que foi criado.

Possibilidades:

- Escreveu o nome errado no CreateObject()
- Não existe o recurso no Windows
- Equivalente a win_OleCreateObject() que foi usado não funciona como deveria

Por enquanto não tem nada a ver com porta 587, comunicação segura, etc.
Tem a ver com não funcionar/existir CDO na variável.

Email pelo Xharbour

Enviado: 17 Jan 2018 09:51
por JoséQuintas
Exemplo do que mencionei:

Código: Selecionar todos

x := CreateObject( "algo que nao existe" )
x:Send()
Provavelmente isso vai gerar o mesmo erro, porque não existe o objeto indicado.

Email pelo Xharbour

Enviado: 17 Jan 2018 10:30
por alaminojunior
Ele ainda não respondeu se já ativou o login em aplicativos menos seguros no painel do Gmail.
Se não fizer essa configuração, vai retornar esse mesmo erro.
Digo por experiência própria.

Email pelo Xharbour

Enviado: 17 Jan 2018 12:47
por rochinha
Amiguinhos,
Me pego a imaginar: se pra enviar um email é essa novela todo, como será receber?
Receber, nunca consegui.

alaminojunior
Entendo que se fosse problema de habilitar algo lá fora, o erro se daria pelo retorno de email do GMail confirmando a impossiblidade. Ao que parece o erro é pela não existência do método no objeto sendo usado.

Email pelo Xharbour

Enviado: 17 Jan 2018 14:39
por JoséQuintas
Novamente.
Tá tudo errado, não existe fonte pra analisar, apenas menciona sobre Send() não funcionar.
Novamente: não tem a ver com GMAIL, PORTA, WITH, nada...

Outro exemplo prático:
cdo.png