ibec_smtp_SendMail

This function sends an email using SMTP protocol.

Syntax

    function ibec_smtp_SendMail(SMTPHost : string; SMTPPort : string; 
                                UserName : string; Password : string; From : string; 
                                To : string; CC : string; BCC : string; Subject : string; 
                                Message : string; AttachedFiles : string;
                                AdditionalHeaders : string; Options : string; 
                                CallbackBlock : string) : variant;

Features:

  • Support of SSL (Secure Sockets Layer) and TLS (Transport Layer Security) has been implemented.
  • TLS is used automatically if the SMTP server allows it, i.e. STARTTLS is presented in response to the EHLO command. If for some reason you don't need TLS while communicating with an SMTP server - specify 'NoTLS' in the list of options.
  • To use SSL you must specify 'SSL' or 'UseSSL' in the list of options. Ensure that the SMTP server requires an SSL connection, otherwise the connection will not be established.
  • There are some changes in the authentication procedure. In previous versions of the ibec_smtp_SendMail function, the AUTH LOGIN method was used by default. Now the preferred method of authentication is determined by the response to the HELO/EHLO command. It is also possible to specify it manually using the AUTHTYPE option. The following methods are supported: NONE, PLAIN, LOGIN, CRAM-MD5, AUTO. AUTO is a default authentication method.
  • ibec_smtp_SendMail returns NULL if the message has been sent successfully. Otherwise it returns a string containing error message(s).

Options (still in work):

AuthTypeE.g. AuthType=NONE
PriorityHighest/High/Normal/Low/Lowest
... 
  ibec_smtp_SendMail(...,
                   'Encoding=windows-1251; Confirm; Priority=Highest; AuthType=NONE',
                    cbb);

See also the examples below.

Example 1

 execute ibeblock
 as
 begin
   CRLF = ibec_CRLF();
   cbb = 'execute ibeblock (Vals variant)
          as
          begin
            sPref = '''';
            sEvent = Vals[''EVENT''];
            if ((sEvent = ''COMMAND'') or (sEvent = ''HEADER'')) then
              sPref = ''==> '';
            else if (sEvent = ''RESPONSE'') then
              sPref = ''<== '';
            sMes = sPref + Vals[''TEXT''];
            ibec_Progress(sMes);
            LogFile = ibec_GetGlobalVar(''LogFileH'', null);
            if (LogFile is not NULL) then
              ibec_fs_Writeln(LogFile, sMes);
         end';

   sMessage = 'Just a test' + CRLF +
              'This message was sent by ibec_smtp_SendMail function';

   sAttachments = 'D:\smtpsendmail.ibeblock' + CRLF +
                  'D:\script.sql';

   sAddHeaders  = 'IBE-Type: IBEBlock' + CRLF +
                  'IBE-Comment: Just a comment';

   LogFile = ibec_fs_OpenFile('D:\smtp.log', __fmCreate);
   try
     if (LogFile is not null) then
       ibec_SetGlobalVar('LogFileH', LogFile);
      ibec_smtp_SendMail('mail.myserver.com',
                        'smtp',
                        'Bill',
                        'windows_must_die!',
                        '"Bill Gates" <Bill@microsoft.com>',
                        'all@world.com',
                        '',
                        '',
                        'Test message from IBEBlock ibec_smtp_SendMail function',
                        :sMessage,
                        :sAttachments,
                        :sAddHeaders,
                        'Encoding=windows-1251; Confirm; Priority=Highest',
                        cbb);
   finally
     ibec_fs_CloseFile(LogFile);
   end;
 end

Example 2: Using SSL

     Res = IBEC_SMTP_SENDMAIL('smtp.gmail.com', '465',  -- GMAIL requires SSL connection on this port 
                          'some.user@gmail.com',  'masterkey',
                          'some.user@gmail.com',
                          'another.user@gmail.com',
                          '',
                          '', 
                          'Subject of message',
                          'Text of message',
                          '',
                          '',
                          'encoding="UTF-8"; ContentType=plain; Priority=High; UseSSL', null);  

Example 3: Using TLS

     Res = IBEC_SMTP_SENDMAIL('smtp.gmail.com', '25',  -- GMAIL allows TLS on this port; it will be used automatically 
                          'some.user@gmail.com',  'masterkey',
                          'some.user@gmail.com',
                          'another.user@gmail.com',
                          '',
                          '', 
                          'Subject of message',
                          'Text of message',
                          '',
                          '',
                          'encoding="UTF-8"; ContentType=plain; Priority=High; AuthType=LOGIN', null); 

back to top of page
<< ibec_Sleep | IBEBlock | ibec_WaitForEvent >>