Página 3 de 7

Re: Email pelo Xharbour

Enviado: 08 Fev 2011 20:34
por sygecom
Veja que minha função está dentro de um TRY, é que as vezes se não configurar corretamente pode cair no erro mesmo, mas é só configurar certinho, usuario, senha, endereço smtp, se tem SSL e etc.. que vai certinho.

Re: Email pelo Xharbour

Enviado: 08 Fev 2011 21:08
por esbasso
MESMO ERRO usando sua função, tirei o TRY para poder colar o erro aqui

rror CDO.Message/3 DISP_E_MEMBERNOTFOUND: SEND - oError:genCode = 1001
Called from C:\xHarbour121\source\rtl\win32ole.prg->TOLEAUTO:SEND(0)
Called from C:\xHarbour\rotinas\hcdoemail.000->CDO_ENVIA_MAIL(258)
Called from C:\xHarbour\rotinas\hcdoemail.000->CONFIG_MAIL(225)
Called from C:\xHarbour\Estoque6\ESTOQUE.000->MAIN(268)

HwGUI 2.17 xHarbour build 1.2.1 Intl. (SimpLex) (Rev. 6733)


este erro não é questão de configurar
mas da falta de propriedade ou metodo do objeto OLE
a não ser que esta retornando uma mensagem errada sobre o erro

Re: Email pelo Xharbour

Enviado: 08 Fev 2011 22:10
por sygecom
É no mínimo estranho mesmo. Testei aqui com Windows 7 e com Windows XP e deu certo...

Re: Email pelo Xharbour

Enviado: 08 Fev 2011 22:47
por alaminojunior
Eu já notei erros como este, quando acontecía de não encontrar os arquivos para anexar. Não sei se é o caso.

Re: Email pelo Xharbour

Enviado: 08 Fev 2011 23:01
por esbasso
sim
resolvido
na realidade a mensagem não significa exatamente o que se supõe

MSDN:

Invoke returns DISP_E_MEMBERNOTFOUND if one of the following conditions occurs:
A member or parameter with the specified DISPID and matching cArgs cannot be found, and the parameter is not optional.
The member is a void function, and the caller did not set pVarResult to Null.
The member is a read-only property, and the caller set wFlags to DISPATCH_PROPERTYPUT or DISPATCH_PROPERTYPUTREF.

então o que ocasionava o erro era um erro de configuração
no caso foi esta linha
:Item( "http://schemas.microsoft.com/cdo/config ... smtpusessl" ):Value := .F. //wSSL_EMAIL

SÓ FUNCIONA no meu caso se for FALSO

Re: Email pelo Xharbour

Enviado: 08 Fev 2011 23:27
por alaminojunior
Mas e se o servidor exigir que seja SSL ?
Não sei, não me lembro se faz alguma diferença (faz algum tempo que codifiquei esta função no sistema) mas eu linkey junto a tipssl.lib.

Re: Email pelo Xharbour

Enviado: 24 Fev 2011 09:58
por Wesllen
Bom dia,

Aproveitando o Topic.... alguém conhece uma forma de anexar arquivo html para enviar junto com arquivos XML?
Estou tentando fazer isso mas sempre que anexo o html dá erro e a mensagem não é enviada. Se eu retiro o html a mensagem segue normalmente.
Preciso fazer isso que que as NFe já sejam enviadas com os respectivos boletos.

Obs. uso o HB_SENDMAIL.

Agradeço pela ajuda.

[]'s

Re: Email pelo Xharbour

Enviado: 24 Fev 2011 12:43
por rochinha
Amiguinhos,

Para o envio via CDO estou usando somente este trecho na configuração:

Código: Selecionar todos

  objCDOSYSCon:=TOleAuto():New( "CDO.Configuration" )
  objCDOSYSCon:Fields:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver"):Value       := smtp_server
  objCDOSYSCon:Fields:Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport"):Value   := smtp_Port
  objCDOSYSCon:Fields:Item( "http://schemas.microsoft.com/cdo/configuration/sendusing"):Value        := 2 
  objCDOSYSCon:Fields:Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"):Value := 1 
  objCDOSYSCon:Fields:Item( "http://schemas.microsoft.com/cdo/configuration/sendusername"):Value     := smtp_user
  objCDOSYSCon:Fields:Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword"):Value     := smtp_pass
Lembrando que CDO só vai funcionar se tiver conectado a internet pois ele ira se configurar usando o site da Micro$oft.

Para o envio de conteúdo em texto plano ou HTML eu faço assim:

Código: Selecionar todos

...
  objCDOSYSMail:Configuration := objCDOSYSCon
  objCDOSYSMail:From          := mail_from
  objCDOSYSMail:To            := mail_to
  objCDOSYSMail:Subject       := mail_subject
  if lHtml // critica se quero HTML ou Texto plano
     objCDOSYSMail:HTMLBody   := mail_message // + CRLF + CRLF + MemoRead( mail_attach )
  else
     objCDOSYSMail:TextBody   := mail_message // + CRLF + CRLF + MemoRead( mail_attach )
  endif
No BLAT eu faço assim:

Código: Selecionar todos

     BlatCMD := [ blat.txt] + ;
                [ -to ]       + alltrim(cto) + ;
                [ -server ]   + alltrim(cserver) + ;
                ...
                iif( lHtml, [ -html ], [] )
Para o BLAT.TXT faço assim:

Código: Selecionar todos

...
    if lHtml
        cBody := FormHtml( cSubject, cBody )
     endif
     memowrit( "blat.txt", cbody )
... 

Código: Selecionar todos

Function FormHtml( cSubject, cBody )
   Local cOpen  := '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/loose.dtd">' + CRLF 
   Local cClose := CRLF + 'Nossa empresa envia email somente para pessoas e empresas cadastradas em nosso sistema.' + CRLF + ;
                          'Caso tenha duvidas favor entrar em contato com nossa central de atendimento ao cliente.'
   cHTML := ;
      '<html>'  + CRLF + ;
      '<head>'  + CRLF + ;
      '   <meta http-equiv="Content-Type"' + CRLF + ;
      '         content="text/html; charset=iso-8859-1">' + CRLF + ;
      '</head>' + CRLF + ;
      '<body>'  + CRLF + ;
      '<pre>'   + CRLF + ;
       cBody    + CRLF + ;
      '</pre>'  + CRLF + ;
      '</body>' + CRLF + ;
      '</html>'
   Return cOpen + cHTML + cClose

Email pelo Xharbour

Enviado: 11 Jan 2018 00:41
por Shark
Este tópico é bem antigo mas o meiu problema é idêntico e bem recente. Alguém conseguiu afinal desvendar o mistério do objeto "SEND" não existir no CDO.Message?

Imagino que como está sendo utilizado um recurso externo através de OLE, pode ser um problema relacionado a versões de sistema operacional nao?

Atualmente qual método usado para enviar email usando xHarbour?

Email pelo Xharbour

Enviado: 11 Jan 2018 09:15
por alaminojunior
Alguém conseguiu afinal desvendar o mistério do objeto "SEND" não existir no CDO.Message?

Código: Selecionar todos

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

Email pelo Xharbour

Enviado: 11 Jan 2018 12:47
por rochinha
Amiguinhos,

shark
O CDO é bem antigo e vinha automaticamente implantado nos Windows antes da versão 7. Após isto a CDOSYS.DLL até vem, mas depende de instalação, manual ou automatica pelo Programas e Recursos no que se refere a Rede e Exchange.

Procure por *cdo* na pasta System32 ou SYSWOW64 e registre na unha. Lembrando de estar no prompt com direitos Administrador.

Direitos de Administrador não é o mesmo que usar o usuário Administrador. Algumas instalações do Windows escondem o verdadeiro administrador. Para encontrá-lo:

net user administrador /active:yes
ou
net user administrator /active:yes

Email pelo Xharbour

Enviado: 14 Jan 2018 01:41
por Shark
Rochinha Amiguinho...

Seguindo o conceito de sua orientação: devo deduzir que para utilizar o método de envio de email usando "CDO" terei que intervir em cada máquina/windows de meus clientes? Pelo que entendi é mais ou menos isso que sugere. Confirma?

Email pelo Xharbour

Enviado: 14 Jan 2018 02:43
por rochinha
Amiguinhos,

shark
Com certeza, pois se o cdosys.dll, mesmo existindo não estiver registrado o recurso não funcionará. Lembrando que a Microsoft desligou alguns recursos que ficam presentes na instalação mas inativos sendo ativados após configurações nos recursos da máquina.

Digite cdosys.dll windows 7 download no Google e veja os cinco primeiros resultados. Te levam para baixar a .DLL correspondente ao S.O outros podem te levar a baixar "Fixers" que na verdade mentem que falta uma ou outra coisa e fazer voce baixar um programa que não faz nada e te dá prejuízo.

https://www.dll4free.com

http://www.dlldownloader.com[/url [i][url=https://pt.dll-files.com/cdos ... -files.com[/i]

http://originaldll.com

Após baixar passe o Antivirus nos arquivos e copie para a pasta System32 e registre-os. Entre no seu aplicativo e veja se funciona.

Eu também baixei mas não tenho prvisão de quando farei o teste.

Email pelo Xharbour

Enviado: 14 Jan 2018 04:01
por Shark
Amigão... (Rochinha)

Visto que esta intervenção profunda no windows dos usuários de nossos softwares não é tecnologicamente digna (apesar de possível), qual seria a melhor solução, afinal, para tratar email´s por nós programadores do moribundo, mas, persistente clipper word? Confesso que estou profundamente indignado com essa limitação considerando tratamento de emails uma técnica extremamente retrograda. Diga lá irmão... Como saltar essa barreira?

Email pelo Xharbour

Enviado: 14 Jan 2018 09:02
por alaminojunior
Sem querer duvidar do nosso amiguinho Rochinha, não tenho tido reclamação sobre isso por parte dos clientes.
E temos sistema instalados em várias versões de Windows: XP, Seven, 8, 10 ...