Página 1 de 1
Enviar email no xHarbour
Enviado: 22 Nov 2012 01:04
por clodoaldomonteiro
Olá amigos!
Estou tentando enviar email no meu sistema usando um exemplo da documentação do xHarbour e apesar de dizer que o email foi enviado, não chaga nada na minha caixa de email.
Estou tentando mandar de uma conta no yahoo para o hotmail.
O que tem de errado no código abaixo?
Código: Selecionar todos
// The example outlines the steps and data required to send an eMail
// including file attachment to an SMTP mail server (it forwards the eMail)
PROCEDURE Main
LOCAL oSmtp, oEMail
LOCAL cSmtpUrl
LOCAL cSubject, cFrom, cTo, cBody, cFile
// preparing data for eMail
cSmtpUrl := "smtp://mailaccount:password@smtp.server.com"
cSubject := "Testing eMail"
cFrom := "MyName@Mail.server.com"
cTo := "YourName@another.server.com"
cFile := "File_Attachment.zip"
cBody := "This is a test mail sent at: " + DtoC(date()) + " " + Time()
// preparing eMail object
oEMail := TIpMail():new()
oEMail:setHeader( cSubject, cFrom, cTo )
oEMail:setBody( cBody )
oEMail:attachFile( cFile )
// preparing SMTP object
oSmtp := TIpClientSmtp():new( cSmtpUrl )
// sending data via internet connection
IF oSmtp:open()
oSmtp:sendMail( oEMail )
oSmtp:close()
? "Mail sent"
ELSE
? "Error:", oSmtp:lastErrorMessage()
ENDIF
RETURN
Desde já agradeço a ajuda.
Enviar email no xHarbour (Resolvido)
Enviado: 22 Nov 2012 01:51
por clodoaldomonteiro
Já consegui resolver.
É que eu estava informando o nome do destinatário errado.
Mas o bom mesmo é que fiz um teste com o hb_sendmail() e demorava uns 30 segundos mas com a classe TIpMail() demora só 2 segundos.
Enviar email no xHarbour
Enviado: 22 Nov 2012 15:48
por lugab
Amigos,
Aproveito o assunto para tirar a seguinte dúvida:
A maioria dos destinatários sentem medo de baixar ou abrir um arquivo anexado. então, usando as facilidades da classe postada acima pelo Clodoaldo, tem como enviar o email exibindo as linhas do arquivo texto ( RTF ou DOC ou TXT) no corpo da mensagem, em vez de simplemente anexar o arquivo ??.
Usando essa classe
Enviar email no xHarbour
Enviado: 26 Dez 2012 16:48
por sygecom
Olá,
Com essa classe não tenho certeza, por que o :setBody('TEXTO DO EMAIL') é apenas texto, mas se anexar por exemplo um arquivo HTML usando: attachFile() ele acho que mostra no corpo da mensagem, ou seja, pode ser ilimitado o que deseja mostrar no corpo do email. ( faça testes )
Nota: Particularmente uso a DLL do BLAT.DLL para envio de email e é bem rápido também.
Enviar email no xHarbour
Enviado: 25 Abr 2013 19:59
por Softwhouse
Não conseguí fazer funcionar esse código, teria algum exemplo prático de como configurar cSmtpUrl ?
Enviar email no xHarbour
Enviado: 16 Out 2013 14:01
por chrissoares
Softwhouse escreveu:Não conseguí fazer funcionar esse código, teria algum exemplo prático de como configurar cSmtpUrl ?
Saudações!
Para você configurar o servidor de SMTP, eu uso a classe TUrl, passando uma string com a configuração. Esta classe possui um método chamado BuildAddress que retorna a configuração correta para utilizar o TIpClientSmtp.
Veja o exemplo abaixo.
Código: Selecionar todos
#define CRLF HB_OsNewLine() //Quebra de Linha
//Para definir o email como Html
oEmail = TIpMail():new()
oEmail:setFieldPart('From:', '"Seu Nome'" <seu@enderecodeemail.com>')
oEmail:setFieldPart('Content-Type', 'text/html; charset="iso-8859-1"')
oEmail:setFieldPart("content", "Content-Type")
oEmail:setFieldPart("MIME-Version", "1.0")
//Fim Definir o email como Html
oEmail:setHeader('Assunto', 'seu@enderecodeemail.com' , 'emaildo@destinatario.com')
oEmail:setBody(FormHtml(cAssunto,cMsg)) //Para o LUGAB: Acredito que se carregar o arquivo TXT neste cMsg você consiga enviar seu arquivo no corpo do email, invés de anexado.
oUrl = TUrl():new("smtp://usuarioemail:senhaemail@smtp.endereco.servidor.email:portadoemailnormalmente21ou587")
oSmtp = TIpClientSmtp():new(oUrl:buildAddress())
if oSmtp:open()
oSmtp:sendMail(oEmail)
oSmtp:Close()
else
Alert("Não foi possível conectar ao servidor SMTP do Email. Erro: "+oSmtp:lastErrorMessage())
endif
//Esta função estou utilizando para enviar textos formatados como HTML no corpo do email.
Function FormHtml( cSubject, cBody )
Local cOpen := "", cClose := "",;
cHTML := '<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">'+CRLF+;
'<html>' + CRLF + ;
'<head>' + CRLF + ;
' <title>' + cSubject + '</title>' + CRLF + ;
' <meta content="text/html; charset=iso-8859-1" http-equiv=Content-Type>'+CRLF+;
'</head>' + CRLF + ;
'<body style="font-">' + CRLF + ;
cBody + CRLF + ;
'</body>' + CRLF + ;
'</html>'
Return cOpen + cHTML + cClose
Espero que ajude a quem estiver tendo dificuldades com o envio de emails.
Enviar email no xHarbour
Enviado: 11 Dez 2017 11:04
por Kapiaba
Bom dia, alguém tem essa função e a DLL mais atuais? Não consgio enviar email via yahoo com esta rotina. Não dá erro, mas o programa fica travado.
DLL muito antiga e não sei quem é o autor.
06/06/2010 11:54 109.056 sndmail.dll
06/06/2010 11:54 3.160 sndmail.lib
Código: Selecionar todos
#include "Fivewin.ch"
STATIC hDll
FUNCTION MAIN()
LOCAL cFrom := "joao@pleno.com.br"
LOCAL cServer := "smtp.pleno.com.br"
LOCAL cTo := "joao@pleno.com.br"
LOCAL cSubjeCt := "Test with sendmail.dll"
LOCAL cMessage := "Test with sendmail.dll - Email Body"
LOCAL cSender := "joao@pleno.com.br"
LOCAL cUser := "joao@pleno.com.br"
LOCAL cPassword := "xxxxxxx"
LOCAL aAttach := {}
LOCAL aCc := "" //???
LOCAL lHtml := .F.
LOCAL cPort := "587"
LOCAL lNotification := .F. // cFrom
LOCAL lRet
lRet := SENDMAIL( cFrom, cServer, cTo, cSubject, cMessage, cSender, cUser, cPassword, aAttach, aCc, lHtml, cPort, lNotification )
IF lRet
? "Message sent successfully perfect with FWH17.01"
ELSE
? "Unsent message check windows live mail"
ENDIF
RETURN NIL
FUNCTION SENDMAIL( cFrom, cServer, cTo, cSubject, cMessage, cSender, cUser, cPassword, aAttach, aCc, lHtml, cPort, lNotification )
LOCAL cMsgFile := CTEMPFILE()
LOCAL cCmd := "SndMail -f " + cFrom + " -X " + cServer + " -r " + cTo + " -s " + ["] + cSubject + ["] + " -b " + cMsgFile
LOCAL nRes
LOCAL i
DEFAULT lHtml := "<html" $ LOWER( cMessage )
MEMOWRIT( cMsgFile, cMessage + CRLF )
IF !EMPTY( aAttach )
FOR i = 1 TO LEN( aAttach )
cCmd += " -a " + ["] + aAttach[ i ] + ["]
NEXT
ENDIF
IF !EMPTY( cSender )
cCmd += " -F " + ["] + cSender + ["]
ENDIF
IF !EMPTY( cUser )
cCmd += " -h LOGIN -u " + cUser
ENDIF
IF !EMPTY( cPassword )
cCmd += " -p " + cPassword
ENDIF
IF !EMPTY( aCc )
FOR i = 1 TO LEN( aCc )
cCmd += " -c " + ["] + aCc[ i ] + ["]
NEXT
ENDIF
IF lHtml
cCmd += " -H"
ENDIF
IF !EMPTY( cPort )
cCmd += " -P " + cPort
ENDIF
IF !EMPTY( lNotification )
cCmd += " -t " + ["] + "Disposition-Notification-To: " + cFrom + ["]
ENDIF
hDLL = LOADLIBRARY( "sndmail.dll" )
IF hDll = 0
? [Install sndmail.dll.. ]
__QUIT()
ELSE
SMTPLIBOPEN() // OPEN sndmail.dll
ENDIF
nRes = SMTPSENDMAIL( cCmd )
SMTPLIBCLOSE()
FREELIBRARY( hDLL )
FERASE( cMsgFile )
RETURN nRes = 0
DLL STATIC FUNCTION SMTPLIBOPEN() AS VOID;
PASCAL FROM "USmtpLibOpen" LIB hDll
DLL STATIC FUNCTION SMTPSENDMAIL( cCmd AS STRING ) AS LONG;
PASCAL FROM "USmtpCmdLineSendMail" LIB hDll
DLL STATIC FUNCTION SMTPLIBCLOSE() AS VOID;
PASCAL FROM "USmtpLibClose" LIB hDll
// END OF PROGRAM
Obg. Abs.