Rubens,
Adaptei e funcionou belezinha no teste que estou mostrando abaixo, agora é só adaptar para o meu sistema mesmo!
Simão, como eu disse acima lá no início, no meu HMG não compila com __HBEXTERN__HBSSL__, dá pau!
Agradeço também aos demais, tem várias formas de enviar mas essa funcionou blzinha...
Abraços...
Código: Selecionar todos
#include <hmg.ch>
Function Main()
Load Window Main
Main.Center
Main.Activate
Return
Procedure main_button_ipexterno_action()
//Main.Label_IPExterno.Value := Pega_IP_Externo()
Return
Procedure main_button_1_action()
Local cServer := Main.Text_server.Value
Local cUser := Main.Text_from.Value
Local cFrom := cUser // Normalmente o From é o mesmo que o User
Local cPassword := Main.Text_psw.Value
Local cTo := Main.Text_to.Value
Local cCC := cBCC := ''
Local cSubject := Main.Text_subject.Value
Local lAuth := Main.Check_Auth.Value
Local lSSL := Main.Check_SSL.Value
Local nPort := Main.Text_port.Value
Local cBody := AllTrim(Main.Edit_body.Value)
if My_SendMail(cServer, nPort, lAuth, lSSL, cUser, cPassword, cFrom, cTo, cCC, cBCC, cSubject, cBody, .T. )
//MsgInfo('E-Mail enviado com sucesso.', 'Sucesso!')
else
//MsgExclamation('E-Mail NÃO FOI enviado.', 'Erro!')
end
Return
e a função usada foi esta:
Código: Selecionar todos
/*
*****************************************************************************************
* Função personalizada para envio de e-Mail usando
* Componente CDOsys da Microsoft em servidores Windows
* 2016/09/21 - by Nilton G. Medeiros
*
* Nota: ENVIO DA MENSAGEM NO FORMATO TEXTO (e-mail simples)
* PARA ENVIO DA MENSAGEM NO FORMATO HTML, ALTERE O TextBody PARA HtmlBody
* e procure informações sobre o componente CDOsys Microsoft e TAG's HTMLs
*
* fonte: http://search.msdn.microsoft.com/search/default.aspx?siteId=0&tab=0&query=cdosys
*
*****************************************************************************************
*/
#include <hmg.ch>
#include <hbcompat.ch>
Function My_SendMail( cSmtpServer, nSmtpServerPort, lSmtpAuthenticate, lSmtpUseSSL, cSendUserName, cSendPassword, cFrom, cTo, cCC, cBCC, cSubject, cTextBody, lAlerta )
Local lRet := .F.
Local oCfg := win_OleCreateObject( "CDO.Configuration" )
Local oErroMail, oMsg
DEFAULT lAlerta := .F.
//--> CONFIGURAÇOES DE E-MAIL
TRY
WITH OBJECT oCfg:Fields
:Item("http://schemas.microsoft.com/cdo/configuration/smtpserver"):Value := cSmtpServer
:Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport"):Value := nSmtpServerPort
:Item("http://schemas.microsoft.com/cdo/configuration/sendusing"):Value := 2 // sendusing : cdoSendUsingPort, valor 2, para enviar a mensagem usando a rede
:Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"):Value := lSmtpAuthenticate
:Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl"):Value := lSmtpUseSSL
:Item("http://schemas.microsoft.com/cdo/configuration/sendusername"):Value := cSendUserName
:Item("http://schemas.microsoft.com/cdo/configuration/sendpassword"):Value := cSendPassword
:Update()
END WITH
lRet := .T.
CATCH oErroMail
if (lAlerta)
MsgExclamation({'Houve erro ao configurar o e-mail.', CRLF, CRLF , ;
'Error: ', Transform(oErroMail:GenCode , nil), CRLF, ;
'SubC: ', Transform(oErroMail:SubCode , nil), CRLF, ;
'OSCode: ', Transform(oErroMail:OsCode , nil), CRLF, ;
'SubSystem: ', Transform(oErroMail:SubSystem, nil), CRLF, ;
'Mensagem: ', oErroMail:Description}, 'Erro configurando e-mail!')
end
END
//--> FIM DAS CONFIGURAÇOES.
if ( lRet )
// --> ENVIA E-MAIL
TRY
//MsgStatus("Aguarde, processando o envio do email.")
oMsg := win_OleCreateObject( "CDO.Message" )
WITH OBJECT oMsg
:Configuration := oCfg
:From := cFrom
:To := cTo
:Cc := cCC
:BCC := cBCC
:Subject := cSubject
/*
* ------------------------------------------------------------
* Aqui adiciona a imagem ao corpo da mensagem qdo formato HTML
* ------------------------------------------------------------
IF !Empty(cImagem)
:AddRelatedBodyPart(hb_DirBase()+"img"+hb_PS()+cImagem, cImagem, 1)
:Fields:Item("urn:schemas:mailheader:Content-ID"):Value := "<"+cImagem+">"
:Fields:Item("urn:schemas:mailheader:Content-Disposition"):Value := "inline"
:Fields:Update()
ENDIF
:HTMLBody := cMsg // + QuebraHTML + IF(!Empty(cImagem), cImagem1, "")
* ------------------------------------------------------------------------------------------------
*/
:TEXTBody := cTextBody
/*
FOR X := 1 TO Len( aFiles )
:AddAttachment(AllTrim(aFiles[x]))
*DO EVENTS
NEXT
*/
:Fields("urn:schemas:mailheader:disposition-notification-to"):Value := cFrom
:Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"):Value := lSmtpAuthenticate
:Fields("http://schemas.microsoft.com/cdo/configuration/smtpusessl"):Value := lSmtpUseSSL
:Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver"):Value := cSmtpServer
:Fields:update()
*DO EVENTS
:Send()
END WITH
if ( lAlerta )
MsgInfo( 'E-mail enviado com sucesso.', 'Sucesso!')
end
CATCH oErroMail
if ( lAlerta )
MsgExclamation( {'Não foi possível enviar a mensagem: ' + cSubject, CRLF, ;
'para o email: ', cTo, '.', CRLF, ;
'Erro: ', oErroMail:Description}, 'Erro!' )
end
lRet := .F.
END
end
Return ( lRet )