Thanks for your advice.

Console program does not have message pump by default.  I built a simple 
function to peek messages in the following way:

void __fastcall PumpMessages()
  MSG  Msg;
  unsigned short TimeTick = 0;

  while(TimeTick < 50)
    if(PeekMessage(&Msg, NULL, 0, 0, PM_REMOVE))
      /* Dispatch the message.                     */
    } /* End of PeekMessage while loop. */
      /* if there is no message to process,        */
      /* then sleep for a while to avoid tight       */
      /* looping                                              */
      /* Increment time tick to allow quiting      */
      /* the loop anyway upon times out           */

Not a good design but anyway the events can be triggered now when I call the 

Problem now is when I call SmtpCli->Data(), after the From, To, Subject, 
Content-type stuff are posted the function relies on the SmtpClientGetData 
event handler to post mail body line by line.  In my case since the message 
loop function can only be called after the SmtpCli->Data() returned, therefore 
the MsgLine points to null when being referenced inside SmtpCli->Data().  Is 
there any other way to set the mail body prior to calling Data()?

I also note in the SmtpProt.pas there is a derived class TSyncSmtpCli.  Does 
this class support blocked operations which are not message-based?  Is there 
any example in using this derivative?

Thanks and regards,
To unsubscribe or change your settings for TWSocket mailing list
please goto
Visit our website at

Reply via email to