|   | 
      
        
          
            
              | BOOL Connect( | 
             
            
              |   | 
              LPCTSTR lpszRemoteHost, | 
                | 
             
            
              |   | 
              UINT nRemotePort, | 
                | 
             
            
              |   | 
              UINT nTimeout, | 
                | 
             
            
              |   | 
              DWORD dwOptions, | 
                | 
             
            
              |   | 
              HWND hEventWnd, | 
                | 
             
            
              |   | 
              UINT uEventMsg | 
                | 
             
            
              | ); | 
             
           
         
        
          The Connect method is used to establish a connection with
          the server. 
         
        Parameters
        
          
            - lpszRemoteHost
 
            - A pointer to the name of the server to connect to; this
            may be a fully-qualified domain name or an IP address.
 
            - nRemotePort
 
            - The port number the server is listening on. A value of
            zero specifies that the default port number should be used. For
            standard connections, the default port number is 25. An alternative
            port is 587, which is commonly used by authenticated clients to
            submit messages for delivery. For implicit SSL connections, the
            default port number is 465.
 
            - nTimeout
 
            - The number of seconds that the client will wait for a response
            from the server before failing the current operation.
 
            - dwOptions
 
            - An unsigned integer that specifies one or more options. This
            parameter is constructed by using a bitwise operator with any of
            the following values:
 
           
         
        
          
            
              
                | Constant | 
                Description | 
               
              
                | SMTP_OPTION_NONE | 
                No additional options are specified when establishing a
                connection with the server. A standard, non-secure connection
                will be used and the client will not attempt to use extended
                (ESMTP) features of the protocol. Note that if the mail server
                requires authentication, the SMTP_OPTION_EXTENDED option must
                be specified. | 
               
              
                | SMTP_OPTION_EXTENDED | 
                Extended SMTP commands should be used if possible. This
                option enables features such as authentication and delivery
                status notification. If this option is not specified, the
                library will not attempt to use any extended features. This
                option is automatically enabled if the connection is
                established on port 587 because submitting messages for
                delivery using this port typically requires client
                authentication. | 
               
              
                | SMTP_OPTION_TUNNEL | 
                This option specifies that a tunneled TCP connection and/or
                port-forwarding is being used to establish the connection to
                the server. This changes the behavior of the client with
                regards to internal checks of the destination IP address and
                remote port number, default capability selection and how the
                connection is established. | 
               
              
                | SMTP_OPTION_TRUSTEDSITE | 
                This option specifies the server is trusted. The
                server certificate will not be validated and the connection
                will always be permitted. This option only affects connections
                using either the SSL or TLS protocols. | 
               
              
                | SMTP_OPTION_SECURE | 
                This option specifies that a secure connection should be
                established with the server and requires that the server
                support either the SSL or TLS protocol. The client will initiate
                the secure session using the STARTTLS command. | 
               
              
                | SMTP_OPTION_SECURE_IMPLICIT | 
                This option specifies the client should attempt to
                establish a secure connection with the server. The server must
                support secure connections using either the SSL or TLS
                protocol, and the secure session must be negotiated immediately
                after the connection has been established. | 
               
              
                | SMTP_OPTION_SECURE_FALLBACK | 
                This option specifies the client should permit the use 
                of less secure cipher suites for compatibility with legacy 
                servers. If this option is specified, the client will allow 
                connections using TLS 1.0 and cipher suites that use RC4, MD5 
                and SHA1. | 
               
              
                | SMTP_OPTION_PREFER_IPV6 | 
                This option specifies the client should prefer the use of 
                IPv6 if the server hostname can be resolved to both an IPv6 and 
                IPv4 address. This option is ignored if the local system does 
                not have IPv6 enabled, or when the hostname can only be resolved 
                to an IPv4 address. If the server hostname can only be resolved 
                to an IPv6 address, the client will attempt to establish a 
                connection using IPv6 regardless if this option has been 
                specified. | 
               
              
                | SMTP_OPTION_FREETHREAD | 
                This option specifies that this instance of the class may
                be used by any thread, and is not limited to the thread which
                created it. The application is responsible for ensuring that
                access to the class instance is synchronized across multiple
                threads. | 
               
             
           
         
        
          
            - hEventWnd
 
            - The handle to the event notification window. This window
            receives messages which notify the client of various asynchronous
            socket events that occur. If this argument is NULL, then the client
            session will be blocking and no network events will be sent to the
            client.
 
            - uEventMsg
 
            - The message identifier that is used when an asynchronous socket
            event occurs. This value should be greater than WM_USER as defined
            in the Windows header files. If the hEventWnd argument is
            NULL, this argument should be specified as WM_NULL.
 
           
         
        Return Value
        
          If the method succeeds, the return value is non-zero. If the
          method fails, the return value is zero. To get extended error
          information, call GetLastError. 
         
        Remarks
        
          The use of Windows event notification messages has been deprecated 
          and may be unavailable in future releases. It was designed for use in 
          legacy single-threaded applications and requires the application to 
          have a message pump to process event messages. It should not be used 
          with applications which are designed to execute as a service or those 
          which do not have a graphical user interface. 
          To prevent this method from blocking the main user interface thread,
          the application should create a background worker thread and establish
          a connection by calling Connect in that thread. If
          the application requires multiple simultaneous connections, it is
          recommended you create a worker thread for each client session. 
          
          If you specify an event notification window, then the client
          session will be asynchronous. When a message is posted to the
          notification window, the low word of the lParam parameter
          contains the event identifier. The high word of lParam
          contains the low word of the error code, if an error has occurred.
          The wParam parameter contains the client handle. One or more
          of the following event identifiers may be sent: 
         
        
          
            
              | Constant | 
              Description | 
             
            
              | SMTP_EVENT_CONNECT | 
              The connection to the server has completed. The high
              word of the lParam parameter should be checked, since this
              notification message will be posted if an error has
              occurred. | 
             
            
              | SMTP_EVENT_DISCONNECT | 
              The server has closed the connection to the client. The
              client should read any remaining data and disconnect. | 
             
            
              | SMTP_EVENT_READ | 
              Data is available to read by the client. No additional
              messages will be posted until the client has read at least some
              of the data. This event is only generated if the calling process
              is in asynchronous mode. | 
             
            
              | SMTP_EVENT_WRITE | 
              The client can now write data. This notification is sent
              after a connection has been established, or after a previous
              attempt to write data has failed because it would result in a
              blocking operation. This event is only generated if the client is
              in asynchronous mode. | 
             
            
              | SMTP_EVENT_TIMEOUT | 
              The client has timed out while waiting for a response from
              the server. Note that under some circumstances this event can be
              generated for a non-blocking connection, such as when the client
              is establishing a secure connection. | 
             
            
              | SMTP_EVENT_CANCEL | 
              The client has canceled the current operation. | 
             
            
              | SMTP_EVENT_COMMAND | 
              The client has processed a command that was sent to the
              server. The result code and result string can be used to
              determine if the response to the command. The high word of the
              lParam parameter should be checked, since this notification
              message will also be posed if the command cannot be
              executed. | 
             
            
              | SMTP_EVENT_PROGRESS | 
              This event notification is sent periodically during lengthy
              blocking operations, such as retrieving a complete message from
              the server. | 
             
           
         
        
          To cancel asynchronous notification and return the client to a
          blocking mode, use the DisableEvents method. 
          It is recommended that you only establish an asynchronous
          connection if you understand the implications of doing so. In most
          cases, it is preferable to create a synchronous connection and create
          threads for each additional session if more than one active client
          session is required. 
          The dwOptions argument can be used to specify the threading
          model that is used by the library when a connection is established.
          By default, the class instance is initially attached to the thread
          that created it. From that point on, until the it is released, only
          the owner may call methods using that instance of the class. The
          ownership of the class instance may be transferred from one thread to
          another using the AttachThread method. 
          Specifying the SMTP_OPTION_FREETHREAD option enables any thread to
          call any method in that instance of the class, regardless of which
          thread created it. It is important to note that this option disables
          certain internal safety checks which are performed by the library and
          may result in unexpected behavior unless access to the class instance
          is synchronized. If one thread calls a function in the library, it
          must ensure that no other thread will call another function at the
          same time using the same instance. 
         
        Requirements
        
          Minimum Desktop Platform: Windows 7 (Service Pack 1)
           
          Minimum Server Platform: Windows Server 2008 R2 (Service Pack 1)
           
          Header File: cstools10.h
           
          Import Library: csmtpv10.lib
           
          Unicode: Implemented as Unicode and ANSI versions. 
         
        See Also
        
          
            Authenticate, 
            Disconnect,
            GetExtendedOptions
           
         
       | 
        |