Jump to content
Fivewin Brasil

E-Mail não envia, mas envia antes


Theotokos

Recommended Posts

Bom Dia pessoal!!!

Estou usando a rotina abaixo para enviar e-mail do fechamento do caixa, apesar de aparecer mensagem de enviando com sucesso não recebo...

usando conta gmail para enviar e receber

<code>

    cUsuaID         := StrTran( cUsuaID, "@", "&at;" )
    cUrl          := cProto + cUsuaID + ":" + cPassword + "@" + cServer
    nPort            := EMAIL->PORTA_S // 465
    *
    cFrom    := AllTrim(EMAIL->FROM_E) // "rone@rl-informatica.net"
   cTo      := AllTrim(EMAIL->TO_E)   // "errosys@rl-informatica.net"
   cCC        := ""
   cSubject := "Caixa Enviado - "+AllTrim(EMAIL->LOJA_E)
   cFile      := cArqTela
      cBody      := "Enviando Caixa [" + cArqTela + "]  " + CRLF + GerarCxArq()
    *
    EMAIL->(DbCloseArea())
   If Empty(cServer)
       Return nil
      EndIf
   *
    oUrl              := TUrl():New(cUrl , lCreateLogFile := .f.)
    oUrl:nPort      := nPort
    oUrl:cUserid := cUsuaID
    *
    oSmtp := TIpClientSmtp():new( oUrl , lCreateLogFile  )    
    *
   oEMail := TIpMail():new()
   oEMail:setHeader( cSubject, cFrom, cTo, cCC )
   oEMail:setBody( cBody )
   oEMail:attachFile( ALLTRIM(cFile) )
 
   //oEMail:hHeaders[ "Disposition-Notification-To" ] := cFrom // solicita confirmacao
 
   oSmtp:nConnTimeout := 2000
 
   IF oSmtp:open()
 
        oSmtp:sendMail( oEMail )
 
      oSmtp:close()
 
      MsgWait( , [RL Informatica], 2)
 
   ELSE
 
      MSGWait( oSmtp:lastErrorMessage(), "ERRO", 2  )
 
   ENDIF
</code>

 

Link to comment
Share on other sites

Mesmo com o RMail não estou conseguindo enviar, tentei pelo gmail, hotmail, bol.... nenhum deles foi... só informa que email não foi enviado... a mensagem em :

Function Envia_Mail(oCfg, cFrom, cTo, cCC, cBCC, cMsg, cSubject)
 
  local cToken
  local lRet := .f.  
  
  cTo   := Destinatarios( cTo ) //--> PARA	
  cCC   := Destinatarios( cCC ) //--> COM COPIA
  cBCC  := Destinatarios( cBCC ) //--> COM COPIA OCULTA
 	
       TRY
         oMsg := CREATEOBJECT ( "CDO.Message" )
           WITH OBJECT oMsg
                
					 :Configuration = oCfg
                :From 			 = AllTrim(cFrom)
					 :To 				 = AllTrim(cTo)
					 :CC 				 = AllTrim(cCC)
					 :BCC 			 = AllTrim(cBCC)
				
                :Subject = cSubject
                :TextBody = cMsg

	             FOR x := 1 To Len( aAttach )  // Anexos dos Email aqui - LOCAL
	 
	                SYSREFRESH()
	 
	                IF aAttach[x] <> NIL
	                   :AddAttachment(ALLTRIM(aAttach[x]))
	                ENDIF
	 
	             NEXT
	             :Send()
           END WITH
           lRet := .t.
       CATCH
           MsgInfo("Não Foi Possível enviar a mensagem","AQUI_Erro")
           lRet := .f.
		 END
 
    
Return lRet

 

Link to comment
Share on other sites

 

Bindindo, num sei usar ACBR, podrias hacer un ejemplo e disponibilizar para download, ou envia-me no skype, que "bosto" para download no www.pctoledo.com.br  - Com exemplo é mais fácil, né flor de lis? kkkkkkkkkkkkkkkkkkkk

Flor de liz é froid. ahahahaha.

 

João a ACBRDLL posso te enviar e alguns procedimentos, mas eu nunca usei tb, mas podemos testar juntos, inclusive passei pro mestre Rochinha (Anda sumido, deve estar em Alcatrazes na Rocha. ahahaha) a DLL do ACBRSAT e ele não deve ter testado tb.

 

[]s,

Link to comment
Share on other sites

Pode tb se quiser, usar um EXE q eu criei em outra linguagem da seguinte forma

Primeiro monta um TXT como o exemplo abaixo:

        cLinha := ""
        //-- Bloco de Configuração da Conta do Email
        cLinha += "|EMAILCONF"
          cLinha += "|"+ ALLTRIM(cServerIP)     // smtp-mail.outlook.com|"
          cLinha += "|"+ ALLTRIM(cUser)         // contadoemail@hotmail.com|"
          cLinha += "|"+ hb_Base64encode(cPass) // senha da conta
          cLinha += "|"+ allstr(vPortSMTP)      // Porta Exemplo Gmail pode ser 587
	  cLinha += "|2"                        // 1= Default 2= Secured TLS  3= SSL (Obs: Para Hotmail usar 2)
	  cLinha += "|"+CRLF                    // Final da linha/bloco
    
        //-- Bloco do Destinatario e da Mensagem
        cLinha += "|MESSAGE"
          cLinha += "|"+ cFrom        // Quem envia   exemplo: Zezinho da Silva <zezinho@taltal.com.br>        
          cLinha += "|"+ cQuem        // Destinatario exemplo: fulano@taltal.com.br
          cLinha += "|"+ cSubject     // Assunto      exemplo: Detalhes do Movimento dos Caixas
          cLinha += "|"+ cMsg         // Mensagem     exemplo: E-mail enviado pelo sistema
	  cLinha += "|"+ CRLF         // Final da linha/bloco
        
        //-- Bloco de Anexos... caso tenha
        IF len(aAnexos)>0
            FOR nI:=1 to len(aAnexos)
                cLinha += "|ATTACH"
                cLinha += "|"+ aAnexos[nI] // Caminho do anexo exemplo: C:\Documentos\Detalhe_do_Movimento_dos_Caixas.PDF
                cLinha += "|"+ CRLF
            NEXT            
        ENDIF
        cLinha += "|FIM" +CRLF     
	Memowrit("email_100.txt", cLinha)            

Exemplo de como ficaria o código acima (arquivo email_100.txt)

|EMAILCONF|smtp-mail.outlook.com|contadoemail@hotmail.com|Y2FsdW5hdHlzdXBvcnRl|587|2|
|MESSAGE|Zezinho da Silva <zezinho@taltal.com.br>|fulano@taltal.com.br|Detalhes do movimento dos caixas|E-mail enviado pelo sistema                                                                                                                                                                                                                                    |
|ATTACH|D:\Sistema\PDFs\01021876_DETALHES_DO_MOVIMENTO_DOS_CAIXAS_210419103806.PDF|
|FIM
�

 

Depois chamo o exe wEnvMail (ambos ficam na mesma pasta, ou seja, o wEnvEmail procura o email_100.txt q estiver na pasta

        FErase(CurDirSys()+'emailauto.log') // Esse arquivo é criado pelo wEnvMail caso ocorra algum problema
        MyRunProc( 'wenvmail', .F.)
        if file("emailauto.log") // Se não enviar por algum motivo vai ter esse arquivo na pasta ai retorna FALSO no envio
            lRet := .F.
        endif
      RETURN lRet

Função MyRunProc (usada pra executar programas externos, tipo ShellExecute

********************************************************************************
function myRunProc( cExecute, lWait, bBlock, nTime, nOccurs )
********************************************************************************
        local hProcess, nResult, nCtd := 0, lRet
        DEFAULT lWait   TO .T.
        DEFAULT nTime   TO  1
        DEFAULT nOccurs TO  0
        
        hProcess := hb_processOpen( cExecute )
        if hProcess != F_ERROR
           while ( nResult := hb_processValue( hProcess, .F. ) ) == -1
              if !lWait
                 EXIT
              endif
              nCtd += 1
              if hb_IsBlock( bBlock )
                 lRet := eval( bBlock, nCtd )
                 if hb_IsLogical( lRet ) .and. !lRet
                    hb_processClose( hProcess, .T. )
                    EXIT
                 endif
              endif
              if nTime > 0
                 hb_idleSleep( nTime )
              endif
              if nCtd = nOccurs
                 hb_processClose( hProcess, .T. )
                 EXIT
              endif
           END
        endif
    
    return nResult

 

Resumindo, cria o TXT e chama o EXE

Esse EXE esta nesse link q fica disponível alguns dias no We Transfer.

 

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...