Provavelmente já exista algo aqui no forum falando sobre isto, mas aqui vai minha experiência.
Eu uso o Blat a muito tempo em minha aplicação, mas sempre usei sua parte commandline, ou seja, o Blat.EXE.
Minha aplicação gerava um arquivo .TXT contendo o conteúdo do email e um .BAT que era executado via WinEXEC().
Mas o recurso interessante é via .DLL, desta forma não faço escritas excessivas no HD e torno o envio mais rápido, podendo até enviar muitos emails em pouco tempo.
O exemplo é simples e vou ilustrá-lo com pouco texto:
Código: Selecionar todos
#include "fivewin.ch"
#Include "dll.ch"
function main( cbody ,;
cserver ,;
cto ,;
cf ,;
csubject ,;
cu ,;
cpw ,;
cattach, lHtml )
lHtml := .t. // Saida em formato HTML
// Sequencia de comandos formatados com dados passados nos parâmetros
BlatCMD := [ blat.txt] + ;
[ -server ] + alltrim(cserver) + ;
[ -to ] + alltrim(cto) + ;
[ -f ] + alltrim(cf) + ;
[ -mailfrom ] + alltrim(cf) + ;
[ -subject "] + alltrim(csubject) + ["] + ;
[ -r ] + ;
[ -u ] + alltrim(cu) + ;
[ -pw ] + alltrim(cpw) + ;
[ -log "email.log" -debug ] + ;
iif( lHtml, [ -html ], [] ) + ;
iif( empty( cAttach ),[],[ -attach "] + alltrim(cattach) + ["])
if lHtml // Se SIM formato o corpo do email em HTML
cBody := FormHtml( cSubject, cBody )
endif
// Salvo o texto formatado
memowrit( "blat.txt", cbody )
// Faço o envio efetivo
BlatSend( BlatCMD )
// Ao gerar o arquivo de .LOG verifico se houve erros
if file( "email.log" )
BlatLOG := memoread( "email.log" )
if "ERROR" $ Upper(BlatLOG)
Mensagem( "Erro: arquivo de BLAT.LOG foi criado" )
return .f.
endif
endif
RETURN .T.
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
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
Código: Selecionar todos
DLL32 FUNCTION BlatSend( BlatCMD AS STRING ) AS LONG PASCAL;
FROM "Send" LIB "Blat.dll"
Código: Selecionar todos
blat.txt -server mail.5volution.com.br -to contato@5volution.com.br -f contato@5volution.com.br -mailfrom contato@5volution.com.br -subject "Confirmacao de Pedido" -r -u contato@5volution.com.br -pw 0123456 -log "email.log" -debug -html -attach "csimg1.gif"
Fiz o teste com a versão 2.6.2 desta .DLL que acompanha o Blat.EXE.


