Abri este tópico para não poluir outros que estão sendo discutidos sobre o assunto.
Primeiro baixem o código em 4Shared
O Mesmo foi feito em Fivewin, mas vocês poderão adaptar com facilidade.
Para testar o executável basta configurar o jpg2email.ini onde:
[JPG2EMAIL]
cTO=coloque o email que ira receber a imagem
cSMTPServer=coloque a URL SMTP do seu provedor de email
CL_Email=coloque um email ficticio tipo trump@kin.jon.hun
cUser=coloque o email da conta do seu provedor de email
cPW=coloque a senha da conta do seu provedor de email
portSMTP=587 troque a pora segura da sua conta ou deixe esta
O arquivo .ZIP possui 4 arquivos:
JPG2EMAIL.EXE
BLAT.DLL
JPG.DLL
JPG2EMAIL.PRG
Caso falte algum, foi o seu antivírus que deletou.
Código:
#include "fivewin.ch"
#include "dll.ch"
FUNCTION MAIN()
// Pega resolução da tela
ResLargura := GetSysMetrics(0)
ResAltura := GetSysMetrics(1)
// Formata variaveis para envio de email
cTo := VerifyINI( "JPG2EMAIL", "cTO" , "oSeuEmail@provedor.com.br", ".\jpg2email.ini", .f. )
cSMTPServer:= VerifyINI( "JPG2EMAIL", "cSMTPServer", "provedor.com.br" , ".\jpg2email.ini", .f. )
CL_Email := VerifyINI( "JPG2EMAIL", "CL_Email" , "teste@provedor.com" , ".\jpg2email.ini", .f. )
cSubject := "**** captura de imagem ****"
cBody := "Imagem capturada usando a JPG.DLL e suas funções e depois a imagem foi enviada usando a BLAT.DLL."
cUser := VerifyINI( "JPG2EMAIL", "cUser" , "usuario@provedor.com.br" , ".\jpg2email.ini", .f. )
cPW := VerifyINI( "JPG2EMAIL", "cPW" , "Minha@Senha" , ".\jpg2email.ini", .f. )
portSMTP := VerifyINI( "JPG2EMAIL", "portSMTP" , "587" , ".\jpg2email.ini", .f. ) // Autenticacao Segura
lHtml := .t. // Formatar a mensagem como HTML
// Cria nome temporario
cAttach := "spyimg_"+CharRem(":",time())+".jpg"
MsgRun( "Capturando imagem da area de trabalho...", "Captura", { | oWnd | ;
SaveToJpg( 0, cAttach, ResLargura, ResAltura ) ;
} )
if !file( cAttach )
MsgStop( "Imagem de captura nao foi gerada.", "Operacao Abortada" )
return nil
endif
// Envia email da imagem capturada
MsgRun( "Enviando imagem capturada por email...", "Email", { | oWnd | ;
BlatEmail() ;
} )
RETURN NIL
Function BlatEmail()
// Monta comando padrao
BlatCMD := [ blat.txt] + ;
[ -to ] + alltrim(cTo) + ;
[ -server ] + alltrim(cSMTPServer) + ;
[ -mailfrom ] + alltrim(CL_Email) + ;
[ -subject "] + alltrim(cSubject) + ["] + ;
[ -r ] + ;
[ -replyto ] + alltrim(CL_Email) + ;
[ -returnpath ] + alltrim(CL_Email) + ;
iif(!empty(cUser),[ -u ] + alltrim(lower(cUser)),"") + ;
iif(!empty(cPW),[ -pw ] + alltrim(cPW),"") + ;
iif(!empty(portSMTP),[ -portSMTP ] + portSMTP, "" ) + ;
[ -log "email.log" -debug ] + ;
iif( lHtml, [ -html ], [] )
// Atacha a imagem
BlatCMD := BlatCMD + [ -attach "] + alltrim(cAttach) + ["]
if lHtml
cBody := FormHtml( cSubject, cBody ) + "Email enviado usando BLAT.DLL"
endif
rMemoWrit( "blat.txt", cbody )
fErase( "email.log" )
// Produz o envio da mensagem com a imagem
BlatLOG := Send( BlatCMD )
// Mostra o LOG da mensagem
SysWait(2)
if file( "email.log" )
BlatLOG := memoread( "email.log" )
MemoEdit( BlatLOG )
endif
RETURN Nil
DLL32 FUNCTION SaveToJpg( hWnd AS LONG, cFileName AS STRING, nWidth AS LONG, nHeight AS LONG ) AS LONG PASCAL ;
FROM "SaveToJpgEx" LIB "JPG.DLL"
DLL32 FUNCTION BmpToJpg( BmpFile AS STRING, JpgFile AS STRING ) AS LONG PASCAL ;
FROM "BmpToJpg" LIB "JPG.DLL"
DLL32 FUNCTION Send( sBlatString AS STRING ) AS LONG PASCAL ;
FROM "Send" LIB "Blat.dll"
DLL32 FUNCTION SendB( sBlatString AS STRING ) AS LONG PASCAL ;
FROM "SendBlat" LIB "Blat.dll"
DLL32 FUNCTION BlatSend( BlatCMD AS STRING ) AS LONG PASCAL;
FROM "Send" LIB "Blat.dll"
Function rMemoWrit( _aquivo_, _conteudo_ )
nHandle := fCreate( _aquivo_ )
fWrite( nHandle, _conteudo_, LEN( _conteudo_ ) )
fClose( nHandle )
return .t.
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 + [CONTRA SPAM] + CRLF + ;
[Somos rigorosamente contra o envio de SPAM e e-mails não autorizados. Se você está recebendo esta comunicação, é porque nossa empresa envia email somente para pessoas e empresas cadastradas em nosso sistema. Caso tenha duvidas favor entrar em contato com nossa central de atendimento ao cliente.] + CRLF + ;
[POLÍTICA DE PRIVACIDADE] + CRLF + ;
[Caso queira saber mais informações sobre nossa política de privacidade consulte o regulamento por meio do site ou, em caso de dúvidas, entre em contato através do nosso formulário. De acordo com as práticas de órgãos regulamentadores da política da Internet, nós mantemos o compromisso de proteger toda e qualquer informação. Também não vendemos ou distribuímos seu cadastro a terceiros, em respeito ao consumidor. Esperamos que aproveite nosso informativo.] + CRLF + ;
[ATITUDE SUSTENTÁVEL] + CRLF + ;
[Não imprima este e-mail, pense na sua atitude com o meio ambiente. Se achar conveniente repassar o e-mail a alguém, encaminhe o mesmo através de sua ferramenta de e-mail.]
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
Function VerifyINI( _section_, _entry_, _var_, _inifile_, _grava_ )
oIni := TIni():New( _inifile_ )
if _grava_ = .t.
oIni:Set( _section_, _entry_, iif( ValType( _var_ )="C", alltrim( _var_ ), _var_ ) )
endif
return oIni:Get( _section_, _entry_, _var_, _var_ )