Send Emails from Fivewin application

User avatar
anserkk
Posts: 1333
Joined: Fri Jun 13, 2008 11:04 am
Location: Kochi, India

Send Emails from Fivewin application

Post by anserkk »

Hi,

Can anyone recommend a reliable solution to send Emails from the Fivewin application?

Regards

Anser
User avatar
Antonio Linares
Site Admin
Posts: 42259
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Send Emails from Fivewin application

Post by Antonio Linares »

Dear Anser,

Harbour provides a hb_SendMail() function

Could hb_SendMail() users provide feeback if it is working fine for them ?

many thanks
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Ruth
Posts: 172
Joined: Fri Dec 07, 2007 1:26 pm
Contact:

Re: Send Emails from Fivewin application

Post by Ruth »

Dear friends,

we are trying to send mails directly from the program.
I found this post about hb_SendMail() ... would this function work in mod_harbour as well and would anyone be so kind as to help me out with your knowledge please...

I have office365 and it provided me with client_id, tenant_id, etc which I stored in environment variables. I suppose this should be parameters of the hb_sendMail() function then... :?:


Any hints and help would be so greatly appreciated. thanks in advance and kind regards
Ruth
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Send Emails from Fivewin application

Post by karinha »

Good morning Ruth, do you only use an example in MOD_HARBOUR?

Buenos días Ruth, ¿puede ser solo un ejemplo en MOD_HARBOUR?

I have it, but it's for desktop.

Lo tengo pero es para desktop.

Tks, gracias.

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
paquitohm
Posts: 284
Joined: Fri Jan 14, 2022 8:37 am

Re: Send Emails from Fivewin application

Post by paquitohm »

Hi,

Try with powershell !

Regards
User avatar
Ruth
Posts: 172
Joined: Fri Dec 07, 2007 1:26 pm
Contact:

Re: Send Emails from Fivewin application

Post by Ruth »

Dear Mr. Santos, I would greatly appreciate your example. May I kindly ask for it...
I use (am learning) MOD_HARBOUR and desktop :-)
Kind regards Ruth
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Send Emails from Fivewin application

Post by karinha »

Ruth wrote:Dear Mr. Santos, I would greatly appreciate your example. May I kindly ask for it...
I use (am learning) MOD_HARBOUR and desktop :-)
Kind regards Ruth
Download complete:

https://mega.nz/file/FQFWgIDT#kvRtIHIes ... 7J8qVQsOX8

https://mega.nz/file/UR9AiKQR#loYk6r3qR ... q43QyYDL0Y

https://mega.nz/file/ZY0lCC4b#J087eB2aP ... ifxl_41Qco

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Send Emails from Fivewin application

Post by karinha »

Ruth, use Google Traductor:

https://imgur.com/djicmRs

Image

Regards, saludos
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
Silvio.Falconi
Posts: 7104
Joined: Thu Oct 18, 2012 7:17 pm

Re: Send Emails from Fivewin application

Post by Silvio.Falconi »

anserkk wrote:Hi,

Can anyone recommend a reliable solution to send Emails from the Fivewin application?

Regards

Anser
Image


USe this

Code: Select all | Expand

static Function EmailProva2(cNomeMittente,cMailMittente,cServerSmtp,nPorta,cNomeUtente,cPassword,lcopianascostaalmittente,cmail)
   Local  nBottom   := 33.2
   Local  nRight    :=  58
   Local  nWidth    :=  Max( nRight * DLG_CHARPIX_W, 180 )
   Local  nHeight   :=  nBottom * DLG_CHARPIX_H
   Local oDlgTest
   Local cDlgTitle  := "Invio Email di Prova"
   Local aGet[10]
   local oTitle1,oImagetitle
   local cImageTitle:= "Mail2.bmp"
   local oFont2,oFontBold2,oFontBold3
   local obtn2[3]
   local nItem := 0
   local x
   local lRet := .f.

  local cSubject:="Email di prova"
  local cMessage:="Questa è una e-mail di prova inviata da ..."
  local cCC:= space(60)
  local cCCn:= IIF( lcopianascostaalmittente,cMailMittente,space(60))


   local oMsg  := CreateObject( "CDO.Message" )
   local oConf := CreateObject( "CDO.Configuration" )
   local cSchema := "http://schemas.microsoft.com/cdo/configuration/"

   local oBtn1,oBtn3



   IF empty(cNomeMittente)
      msginfo("Inserire il nome utente")
      return nil
   Endif

    IF empty(cMailMittente)
      msginfo("Inserire la casella di posta")
      return nil
   Endif

    IF empty(cPassword)
      msginfo("Inserire la password")
      return nil
   Endif



   DEFINE FONT oFont2 NAME 'Tahoma' SIZE 0, -12
   DEFINE FONT oFontBold2 NAME 'Tahoma' SIZE 0, -18 BOLD
   DEFINE FONT oFontBold3 NAME 'Tahoma' SIZE 0, -12 BOLD




     DEFINE DIALOG oDlgTest          ;
         SIZE nWidth, nHeight   PIXEL  ;
         TITLE cDlgTitle

    oDlgTest:lHelpIcon := .F.
    oDlgTest:nStyle    := nOR( DS_MODALFRAME, WS_POPUP, WS_CAPTION,  4 )


      @ 0,0 TITLE  oTitle1 OF oDlgTest size 500, 40  SHADOW NOSHADOW   ;
                               GRADIENT { { 1,CLR_WHITE, LIGHTCYAN } }

        @ 10, 12 TITLETEXT OF oTitle1 TEXT "Invio e-mail" FONT oFontBold2 COLOR CLR_BLACK
        @ 38, 42 TITLETEXT OF oTitle1 TEXT "Inserisci destinatari e testo del messaggio" FONT oFont2 COLOR CLR_BLACK
        @ 10, oTitle1:nWidth-120 TITLEIMG  oImagetitle  OF oTitle1 BITMAP cImageTitle TRANSPARENT


        @ 50 , 10 SAY  "A:" of oDlgTest  size 80,10 PIXEL FONT oFontBold3  COLOR CLR_BLACK
        @ 50,50 GET aGet[1] VAR cMailMittente  size 170,10 PIXEL FONT oFont2  UPDATE

        @ 70 , 10 SAY  "Oggetto:" of oDlgTest  size 80,10 PIXEL FONT oFontBold3  COLOR CLR_BLACK
        @ 70,50 GET aGet[2] VAR cSubject  size 170,10 PIXEL FONT oFont2  UPDATE

        @ 90 , 10 SAY  "CC:" of oDlgTest  size 80,10 PIXEL FONT oFontBold3  COLOR CLR_BLACK
        @ 90,50 GET aGet[3] VAR cCC  size 170,10 PIXEL FONT oFont2  UPDATE

        @ 110 , 10 SAY  "CCn:" of oDlgTest  size 80,10 PIXEL FONT oFontBold3  COLOR CLR_BLACK
        @ 110,50 GET aGet[4] VAR cCCn  size 170,10 PIXEL FONT oFont2  UPDATE

        @ 130,50 GET aGet[5] VAR cMessage  size 170,45 PIXEL FONT oFont2  UPDATE MEMO


         @ 185,50 ListBox oList Var nItem ITEMS aAttach Size 170,50 Pixel

          * @ 190, 25 Button "Agg" Size 20,08 Pixel Action ADDItem()
         *  @ 205, 25 Button "Can" Size 20,08 Pixel Action DELItem()

         oBtn1:= TUrlLink():New( 190, 2, oDlgTest, .T., .F., oFont2, "Aggiungi", "Aggiungi allegato" )
         oBtn1:bAction := { |nRow, nCol| ADDItem()  }
         oBtn3:= TUrlLink():New( 205, 2, oDlgTest, .T., .F., oFont2, "Cancella", "Cancella allegato" )
         oBtn3:bAction := { |nRow, nCol| DELItem()  }




         @ 236, 120 Button obtn2[2] Prompt "&Conferma"  of oDlgTest  size 50,12 PIXEL FONT oFont2 DEFAULT ACTION  ( oDlgTest:end( IDOK )  )
         @ 236, 175 Button obtn2[3] Prompt "&Annulla"   of oDlgTest  size 50,12 PIXEL FONT oFont2 CANCEL  ACTION  ( oDlgTest:end( IDCANCEL ) )
         ACTIVATE DIALOG oDlgTest  centered





  if oDlgTest:nresult == IDOK
        //============================================================================================//
        TRY
           oCfg := CREATEOBJECT( "CDO.Configuration" )
             WITH OBJECT oCfg:Fields
                  :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver"       ):Value := alltrim(cServerSmtp)
                  :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport"   ):Value := val(alltrim(nPorta))
                  :Item( "http://schemas.microsoft.com/cdo/configuration/sendusing"        ):Value := 2
                  :Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value := .t.
                  :Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl"       ):Value := .t.
                  :Item( "http://schemas.microsoft.com/cdo/configuration/sendusername"     ):Value := alltrim(cNomeUtente)
                  :Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword"     ):Value := alltrim(cPassword)
                  :Update()
             END WITH


             lRet := .t.

         CATCH oError
           MsgInfo( "Non è possibile inviare l'email!!!"  +CRLF+ ;
                    "Error: "     + Transform(oError:GenCode,   nil) + ";" +CRLF+ ;
                    "SubC: "      + Transform(oError:SubCode,   nil) + ";" +CRLF+ ;
                    "OSCode: "    + Transform(oError:OsCode,    nil) + ";" +CRLF+ ;
                    "SubSystem: " + Transform(oError:SubSystem, nil) + ";" +CRLF+ ;
                    "Messaggio: "   + oError:Description, "Attenzione" )

         END


         if lRet
                TRY
                 oMsg:To = alltrim(cmail)
                 oMsg:From =chr(34)+alltrim(cNomeMittente)+" "+chr(34)+ "<"+alltrim(cMailMittente)+">"
                 oMsg:Subject = alltrim(cSubject)
                 oMsg:HTMLBody = alltrim(cMessage)
                 oMsg:Sender = alltrim(cNomeMittente)
                 oMsg:Organization = "Family"

                IF lcopianascostaalmittente
                       oMsg:ReplyTo = alltrim(cMailMittente)
                 endif


                       For x := 1 To Len( aAttach )
                           if aAttach[x] <> NIL
                              oMsg:AddAttachment(AllTrim(aAttach[x]))
                           endif
                       Next


                 oMsg:Configuration = oCfg
                 oMsg:Send()

                  CATCH
                  MsgInfo("Non è possibile inviare il messaggio di posta")
                  lRet := .f.
                END

      endif



          Endif

        //============================================================================================//

    return nil
Since from 1991/1992 ( fw for clipper Rel. 14.4 - Momos)
I use : FiveWin for Harbour November 2023 - January 2024 - Harbour 3.2.0dev (harbour_bcc770_32_20240309) - Bcc7.70 - xMate ver. 1.15.3 - PellesC - mail: silvio[dot]falconi[at]gmail[dot]com
User avatar
Ruth
Posts: 172
Joined: Fri Dec 07, 2007 1:26 pm
Contact:

Re: Send Emails from Fivewin application

Post by Ruth »

...thank you very much for the wonderful examples and your friendly help. Kind regards Ruth
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Send Emails from Fivewin application

Post by karinha »

Ruth, a simple example for you to understand better.

Ruth, un ejemplo sencillo para que lo entiendas mejor.

Code: Select all | Expand

// C:\FWH\SAMPLES\RUTHMAIL.PRG

#include "FiveWin.ch"

MEMVAR smtpserver, serverport, sendusing, authenticate, usessl, username, ;
       password, timeout

MEMVAR cFrom, cTo, cSubject, cTextBody

FUNCTION Main()

   PRIV smtpserver, serverport, sendusing, authenticate, usessl, username, ;
        password, timeout

   PRIV cFrom, cTo, cSubject, cTextBody

   smtpserver   := "smtp.pleno.com.br"
   serverport   := 587
   sendusing    :=   2
   authenticate := .T.
   usessl       := .F. // .T. or .F.
   username     := "joao@pleno.com.br" //<your_email>
   password     := "XXXXXXX"           // <sua_senha>
   timeout      := 60

   cFrom        := "joao@pleno.com.br"
   cTo          := "kapiabafwh@gmail.com"
   cSubject     := "RUTH send with Gmail account RUTH"
   cTextBody    := "RUTH: Teste de Email-Only TEST"

   SendMailCDO()

RETURN NIL

FUNCTION SendMailCDO()
 
   LOCAL objMsg, cHtml, oError
   LOCAL msgConf, lRet := .F.
 
   /*
   ? smtpserver, serverport, sendusing, authenticate, usessl, username, ;
     password, timeout
   */

   //' Server Configuration
   TRY

      msgConf := CreateObject("CDO.Configuration")

      WITH OBJECT msgConf:Fields

      :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver"       ):Value := smtpserver
      :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport"   ):Value := serverport
      :Item( "http://schemas.microsoft.com/cdo/configuration/sendusing"        ):Value := sendusing
      :Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value := authenticate
      :Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl"       ):Value := usessl
      :Item( "http://schemas.microsoft.com/cdo/configuration/sendusername"     ):Value := username
      :Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword"     ):Value := password
      :Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value := timeout
 
      :Update()
 
      END WITH

 
   CATCH oError

      MsgInfo("Configuration instance object error " + ";"  + CRLF+ ;
              "Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + CRLF+;
              "SubC: "  + TRANSFORM(oError:SubCode, NIL) + ";" + CRLF+ ;
              "OSCode: "+ TRANSFORM(oError:OsCode, NIL) + ";" + CRLF +;
              "SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" +CRLF+ ;
              "Message: " + oError:Description )
 
   END
 
   //' Email
 
   TRY

      objMsg  := CreateObject("CDO.Message")

      WITH OBJECT objMsg

      :Configuration := msgConf
      :From          := cFrom
      :To            := cTo
      :Subject       := cSubject
      :TextBody      := cTextBody
      :MDNRequested  := .F. // Indicates whether a Message Disposition Notification is requested on a message.
      :Send()

      END WITH
 
      // objMsg:Send()
      lRet := .T.

   CATCH oError

      MsgInfo("Could not send message" + ";"  + CRLF+ ;
              "Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + CRLF+;
              "SubC: "  + TRANSFORM(oError:SubCode, NIL) + ";" + CRLF+ ;
              "OSCode: "+ TRANSFORM(oError:OsCode, NIL) + ";" + CRLF +;
              "SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" +CRLF+ ;
              "Message: " + oError:Description )

      RETURN NIL

   END

   IF lRet // := .T.

      ? "PERFECT RUTH"

   ENDIF
 
RETURN NIL

// FIN / END - kapiabafwh@gmail.com
 
Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
Ruth
Posts: 172
Joined: Fri Dec 07, 2007 1:26 pm
Contact:

Re: Send Emails from Fivewin application

Post by Ruth »

Dear Mr. Santos,

Thank you very, very much.
I got this...
Image
which made me very happy :)

Thank you again and kind regards
Ruth
User avatar
karinha
Posts: 7885
Joined: Tue Dec 20, 2005 7:36 pm
Location: São Paulo - Brasil
Contact:

Re: Send Emails from Fivewin application

Post by karinha »

Great!

Regards, saludos.
João Santos - São Paulo - Brasil - Phone: +55(11)95150-7341
User avatar
Ruth
Posts: 172
Joined: Fri Dec 07, 2007 1:26 pm
Contact:

Re: Send Emails from Fivewin application

Post by Ruth »

Dear Mr. Santos, dear all fivewinners,

please can I ask for your experience and help one more time.

I am able to send also an image with the code you kindly gave to me by switching from
:TextBody to :HTMLBody.

Everything works fine as long as the image is somewhere located on a server ...

I post the code here:

Code: Select all | Expand

// C:\FWH\SAMPLES\RUTHMAIL.PRG

#include "FiveWin.ch"
#Include "Outlook.ch"
#Include "Mail.ch"


MEMVAR smtpserver, serverport, sendusing, authenticate, usessl, username, ;
       password, timeout

MEMVAR cFrom, cTo, cSubject, cTextBody, cImgBase64, cImg, cBase64

FUNCTION Main()

   PRIV smtpserver, serverport, sendusing, authenticate, usessl, username, ;
        password, timeout

   PRIV cFrom, cTo, cSubject, cTextBody, cImgBase64

   smtpserver   := "smtp.iomartmail.com"
   serverport   := 587
   sendusing    :=   2
   authenticate := .T.
   usessl       := .F. // .T. or .F.
   username     := "" //<your_email>
   password     := ""           // <sua_senha>
   timeout      := 60

   cFrom        := "info@winhotel.at"
   cTo          := "hotel@bergland.info"
   cSubject     := "RUTH an RUTH"
  // cTextBody    := "RUTH: Teste de Email-Only TEST"
  
 

  cImgBase64   := hb_base64encode(MEMOREAD("c:\fwh\samples\img\start_slide1.jpg"))
 


   SendMailCDO()

RETURN NIL

FUNCTION SendMailCDO()
 
   LOCAL objMsg, cHtml, oError
   LOCAL msgConf, lRet := .F.
 
   /*
   ? smtpserver, serverport, sendusing, authenticate, usessl, username, ;
     password, timeout
   */

   //' Server Configuration
   TRY

      msgConf := CreateObject("CDO.Configuration")

      WITH OBJECT msgConf:Fields

      :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserver"       ):Value := smtpserver
      :Item( "http://schemas.microsoft.com/cdo/configuration/smtpserverport"   ):Value := serverport
      :Item( "http://schemas.microsoft.com/cdo/configuration/sendusing"        ):Value := sendusing
      :Item( "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate" ):Value := authenticate
      :Item( "http://schemas.microsoft.com/cdo/configuration/smtpusessl"       ):Value := usessl
      :Item( "http://schemas.microsoft.com/cdo/configuration/sendusername"     ):Value := username
      :Item( "http://schemas.microsoft.com/cdo/configuration/sendpassword"     ):Value := password
      :Item( "http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout"):Value := timeout
 
      :Update()
 
      END WITH

 
   CATCH oError

      MsgInfo("Configuration instance object error " + ";"  + CRLF+ ;
              "Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + CRLF+;
              "SubC: "  + TRANSFORM(oError:SubCode, NIL) + ";" + CRLF+ ;
              "OSCode: "+ TRANSFORM(oError:OsCode, NIL) + ";" + CRLF +;
              "SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" +CRLF+ ;
              "Message: " + oError:Description )
 
   END
 
   //' Email
 
   TRY

      objMsg  := CreateObject("CDO.Message")

      WITH OBJECT objMsg

      :Configuration := msgConf
      :From          := cFrom
      :To            := cTo
      :Subject       := cSubject
     // :TextBody      := cTextBody
      :HTMLBody      := '<h1>HTML Content Here</h1><p>This is a TEST MAIL sent from FiveWin using CDO.</p>';
                     +  '<img src="https://bergland.info/img/start_slide1.jpg" >';
                    // +  '<img src="data:image/jpeg;base64,' + cImgBase64 + '" > ';
                     + '<p><b>Test Ende</b></p>' // HTML formatted content
      :MDNRequested  := .F. // Indicates whether a Message Disposition Notification is requested on a message.
      :Send()

      END WITH
 
      // objMsg:Send()
      lRet := .T.

   CATCH oError

      MsgInfo("Could not send message" + ";"  + CRLF+ ;
              "Error: " + TRANSFORM(oError:GenCode, NIL) + ";" + CRLF+;
              "SubC: "  + TRANSFORM(oError:SubCode, NIL) + ";" + CRLF+ ;
              "OSCode: "+ TRANSFORM(oError:OsCode, NIL) + ";" + CRLF +;
              "SubSystem: " + TRANSFORM(oError:SubSystem, NIL) + ";" +CRLF+ ;
              "Message: " + oError:Description )

      RETURN NIL

   END

   IF lRet // := .T.

      ? "PERFECT RUTH"
      

   ENDIF
 
RETURN NIL

// FIN / END - kapiabafwh@gmail.com
 
And also the screenshot of the email I am able to receive:
Image
But I can´t get

Code: Select all | Expand

hb_base64encode(MEMOREAD("c:\fwh\samples\img\start_slide1.jpg"))
and then

Code: Select all | Expand

<img src="data:image/jpeg;base64,' + cImgBase64 + '" >
running. Maybe you have a hint for me? I would really appreciate it very much.

In the meantime kind regards to all of you and thank you
Ruth
paquitohm
Posts: 284
Joined: Fri Jan 14, 2022 8:37 am

Re: Send Emails from Fivewin application

Post by paquitohm »

Hello,

I already recommended powershell to you before. Today we will focus on it. CDO does not allow sending from accounts with the SSL protocol, that is, all those that are Outlook.
In my case I maintain CDO but I have the new one with powershell, that is, a .ps1 file that is called from harbour. It doesn't matter if it is powershell or php, the question is to use something external that is compatible with current standards and is prepared for the new revisions that will arrive, which eliminates CDO because it is a system that is no longer updated

Regards
Post Reply