SEND EMAIL

User avatar
James Bott
Posts: 4654
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA
Contact:

Re: SEND EMAIL

Post by James Bott »

Tim,
I would sure love an SMTP system that works . Sadly, the native system to FWH does not support SSL either, nor does it support attachments.
FWH's TSMTP class does support attachments. There are two issues to keep in mind. First, the attachment name has to include the full path and drive letter. Second, if you are using a temp file as an attachment, you have to put in a delay before deleting the temp file or it may get deleted before it is mailed. If you are still having problems with attachments, then please post your code here and maybe I can find the problem.

Regards,
James
User avatar
TimStone
Posts: 2536
Joined: Fri Oct 07, 2005 1:45 pm
Location: Trabuco Canyon, CA USA
Contact:

Re: SEND EMAIL

Post by TimStone »

I've had attachments all along but I'm using an updated version of tSMTP. The last time I looked, that was still not part of the one included in the libraries.

However, none of those support SSL.

Tim
Tim Stone
http://www.MasterLinkSoftware.com
timstone@masterlinksoftware.com
Using: FWH 19.06 with Harbour 3.2.0 / Microsoft Visual Studio Community 2019
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: SEND EMAIL

Post by Enrico Maria Giordano »

Enrico Maria Giordano wrote:I'm getting erratic errors from Send() method that is not replicable. Anyone got that error and found a way to solve the problem?

EMG
Any suggestions? :-)

EMG
User avatar
James Bott
Posts: 4654
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA
Contact:

Re: SEND EMAIL

Post by James Bott »

Enrico,

I have not seen such a problem. Are you getting error messages? Or, do you mean that some PCs have errors and some do not?

It could be the server. I have occasional server problems even with big email systems like Hotmail, AOL, etc. even with Outlook Express.

Perhaps you could put in a routine so that if it errors out when attempting to send, it tries again in 10 seconds--maybe a couple of times.

Regards,
James
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: SEND EMAIL

Post by Enrico Maria Giordano »

James,
James Bott wrote:Enrico,

I have not seen such a problem. Are you getting error messages?
It seems not.
James Bott wrote:Or, do you mean that some PCs have errors and some do not?
No, the behavior is erratic on the same PC.
James Bott wrote:It could be the server. I have occasional server problems even with big email systems like Hotmail, AOL, etc. even with Outlook Express.

Perhaps you could put in a routine so that if it errors out when attempting to send, it tries again in 10 seconds--maybe a couple of times.

Regards,
James
Thank you, I will try.

EMG
User avatar
reinaldocrespo
Posts: 918
Joined: Thu Nov 17, 2005 5:49 pm
Location: Fort Lauderdale, FL

Re: SEND EMAIL

Post by reinaldocrespo »

Enrico;

Are you sending multiple emails?

I'm using tsmtp on one of my apps quite a bit. Its working quite well for me. This particular app sends over 300 emails per day with .zip attachments. Remember TSMTP does not do SSL. Show me the code. Maybe I can help.



Reinaldo.
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: SEND EMAIL

Post by Enrico Maria Giordano »

Reinaldo,
reinaldocrespo wrote:Enrico;

Are you sending multiple emails?
Yes, but the erratic behavior is the same with a single email.
reinaldocrespo wrote:I'm using tsmtp on one of my apps quite a bit. Its working quite well for me. This particular app sends over 300 emails per day with .zip attachments. Remember TSMTP does not do SSL. Show me the code. Maybe I can help.
The code is the one already reported here and in other threads (CDOSYS).

EMG
User avatar
reinaldocrespo
Posts: 918
Joined: Thu Nov 17, 2005 5:49 pm
Location: Fort Lauderdale, FL

Re: SEND EMAIL

Post by reinaldocrespo »

CDOSYS and TSMTP are not the same. I have been using TSMTP. I once tried CDOSYS, but had sporadic errors and was never able to figure out, or did not spend enough time debuggin.

Here is my code using TSMTP, there are references to other objects, but I'm sure you can follow the code:

Code: Select all

//-----------------------------------------------------------------------
METHOD SendViaEMail( oDbf, oPthRep ) CLASS TMpMailApp
   LOCAL aEmails := HB_ATOKENS( oDbf:Send_To, iif( ";" $ oDbf:Send_To, ";", "," ) )
   LOCAL oDoc      := ::oProcess:Getodbf( "doctors" )
   LOCAL cZipFile  := Temp_Name( "zip" )
   LOCAL cPass, oMail, oTmp
   LOCAL aFiles    := { oPthRep:cPdfFile }
   LOCAL cPathNo := oDbf:PathNo
   LOCAL nQueue  := oDbf:Queue
   LOCAL cSendTo := oDbf:Send_To

   IF oPthRep:isJpg  ;AADD( aFiles, oPthRep:cJpgFile )  ;ENDIF
   IF oPthRep:IsTiff ;AADD( aFiles, oPthRep:cTifFile)   ;ENDIF
   IF oPthRep:isHtml ;AADD( aFiles, oPthRep:cHtmlFile ) ;ENDIF
   IF oPthRep:isRtf  ;AADD( aFiles, oPthRep:cRtfFile )  ;ENDIF

   AEVAL( aEmails, { |e,n| aEmails[ n ] := ALLTRIM( e ) } )

   oDoc:Seek( oDbf:Doc_id )   ;iif( oDoc:Found(), oDoc:Load(), oDoc:Blank() )

   cPass   := ALLTRIM( IIF( oDoc:fieldexist( "password" ) .AND. ;
                     !EMPTY( oDoc:VarPassword ), ;
                     oDoc:VarPassword, oDbf:Doc_id ) )

   IF !hb_zipFile( cZipFile, aFiles, 9,,.t., cPass, .f., .f., .t.  )

      AEVAL( aFiles, { |e| fErase( e ) } )
      ferase( cZipFile )
      Logfile( "PtheMailsErrors.log", { "Error Creating .zip for case:", oDbf:PathNo } )

      RETURN NIL 

   ENDIF

   oMail := TMySmtp():New( ::cIp, ::nPort, ::lAuth, ::cUserName, ::cUserPass )
   oMail:cReplyTo := ::cSender
   oMail:nGMT := TimeZone() //-5   // Atlantic Standard Time (GMT -05:00)

   oMail:aAttachments := aFiles    //save file names to erase later
   
   oMail:oSocket:lDebug := ::lDebug
   oMail:oSocket:cLogFile := "smtp.log"
   oMail:nDelay := ::nDelay

   oMail:bConnecting   := { || iif( oMail:oSocket:lDebug,;
      logfile( oMail:oSocket:cLogFile, { cPathNo, "Connecting to SMTP server " + ::cSmtpServer } ), ) }

   oMail:bConnected   := { || iif( oMail:oSocket:lDebug, ;
      logfile( oMail:oSocket:cLogFile, { cpathNo, "Sending eMail Via " + ::cSmtpServer } ), ) }

   oMail:bDone := { || MailWasSent( cPathNo, nQueue, cSendto ),;
            LogSuccessIntoAuditLog( cPathNo, cSendto ),;
            fErase( cZipFile ),;
            AEVAL( oMail:aAttachments, { |e| ferase( e ) } ),;
            oMail:End(), ;
            oMail := Nil,;
            AEVAL( aFiles, { |e| fErase( e ) } ) }

   oMail:bFailure := { || IncAttempts( cPathNo, nQueue, cSendto ) ,;
            fErase( cZipFile ),;
            AEVAL( oMail:aAttachments, { |e| ferase( e ) } ),;
            iif( oMail != Nil .and. oMail:oSocket:lDebug, ;
                  logfile( oMail:oSocket:cLogFile, { "Failure to send email" } ), ),;
            iif( oMail != Nil, ( oMail:end(), oMail := Nil ), ) }


   oMail:SendMail( ::cSender, aEmails,                   ;
      "Pathology report attached intended for " +                                              ;
        alltrim( StrCapFirst( oDoc:Last ) ) + ", " + alltrim( StrCapFirst( oDoc:First ) )+      ;
        ".  Please use your password to open zipped file." + Chr( 13 ) + Chr( 12 ) +             ;
      "The information contained in this e-mail is privileged and confidential, intended only for the use of "+;
      "the individual or entity named above.  If the reader of this message is not the intended recipient, "+;
      "you are hereby notified that any dissemination, distribution or copy of this information is strictly "+;
      "prohibited.",    ;// Msg Text
      "Pathology Report", ;   // Subject
      { cZipFile },,, .t.  ) // attached files

RETURN NIL 

 
That is working quite well for me. Hope it helps,


Reinaldo.
User avatar
James Bott
Posts: 4654
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA
Contact:

Re: SEND EMAIL

Post by James Bott »

Enrico,

Ah, I thought you were using the FW native TSMTP class.

Is it erroring out during configuration or during sending? If during sending, you might try adding a sysrefresh() just after the :Update() during the configuration.

How often is it erroring out? Once every ten times or? When it errors out, and you immediately try resending the same email does it go through?

If you send the same email 10-20 times does it go sometimes and not others?

Is it only erroring out when there is an attachment?

James
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: SEND EMAIL

Post by Enrico Maria Giordano »

James,
James Bott wrote:Enrico,

Ah, I thought you were using the FW native TSMTP class.

Is it erroring out during configuration or during sending?
During sending.
James Bott wrote:If during sending, you might try adding a sysrefresh() just after the :Update() during the configuration.
Great suggestion! I'm going to try it, thank you!
James Bott wrote:How often is it erroring out? Once every ten times or?
Hard to say... :-(
James Bott wrote:When it errors out, and you immediately try resending the same email does it go through?
Yes.
James Bott wrote:If you send the same email 10-20 times does it go sometimes and not others?
Yes.
James Bott wrote:Is it only erroring out when there is an attachment?
I tested it with attachments.

EMG
User avatar
James Bott
Posts: 4654
Joined: Fri Nov 18, 2005 4:52 pm
Location: San Diego, California, USA
Contact:

Re: SEND EMAIL

Post by James Bott »

Enrico,

OK, I think my original suggestion will be the best solution. When it errors, trap the error, and do a repeat send a few times until it goes through, or completes the cycle. Once it is automated, most of the emails will probably be sent without human intervention.

I did this type of thing a long time ago when I was sending automated faxes. It worked great.

James
User avatar
Enrico Maria Giordano
Posts: 7355
Joined: Thu Oct 06, 2005 8:17 pm
Location: Roma - Italia
Contact:

Re: SEND EMAIL

Post by Enrico Maria Giordano »

James Bott wrote:Enrico,

OK, I think my original suggestion will be the best solution. When it errors, trap the error, and do a repeat send a few times until it goes through, or completes the cycle. Once it is automated, most of the emails will probably be sent without human intervention.

I did this type of thing a long time ago when I was sending automated faxes. It worked great.

James
I don't like it very much because I still don't know what the error is so I can't trap it.

EMG
ADutheil
Posts: 352
Joined: Sun May 31, 2009 6:25 pm
Location: Salvador - Bahia - Brazil

Re: SEND EMAIL

Post by ADutheil »

Enrico,

did you try hb_SendMail function? I´ve been successfully sending mails with attachments from gmail accounts (TLS/SSL) for a while now.
Regards,

André Dutheil
FWH 13.04 HB 3.2 BCC 5.82 MinGW 4.5.2 MSVS 10
Post Reply