TROCustomEmailServer

Overview

The TROCustomEmailServer class, together with its ancestor, the TROEmailServer class, implements a server that uses standard email infrastructure to send messages between clients and servers. The channel is based on the open source Indy components that ship with Delphi.
Due to the nature of email deliveries, this channel is best-suited for asynchronous communications and scenarios where a response to a request is not expected in real time or even during the lifetime of the application.
This class cannot be used directly, please use the TROEmailServer class instead.

Location


 

constructor Create  override

Standard component constructor

constructor Create(aOwner: TComponent)

Parameters:

  • aOwner: Owner

Active    (declared in TROServer)

Toggles whether the server ready to receive requests from clients. Depending on the server type, changing this property might open/close a network socket or otherwise toggle whether the server will process incoming requests.

property Active: Boolean read write

Assign  override

Copies the contents of another, similar object.

procedure Assign(Source: TPersistent)

Parameters:

  • Source: Instance whose properties will be copied

CheckProperties  override

Validates the server properties.

procedure CheckProperties

DecryptStream (TStream, TStream)  protected overload    (declared in TROBaseConnection)

Decrypt stream

procedure DecryptStream(const Source: TStream; const Dest: TStream)

Parameters:

  • Source: Source
  • Dest: Destination

DecryptStream (TStream)  protected overload    (declared in TROBaseConnection)

Decrypt stream

procedure DecryptStream(const Stream: TStream)

Parameters:

  • Stream: Stream

DefaultResponse  protected    (declared in TROServer)

Holds the message that will be sent back to the client if it improperly "welcomes" the server.

property DefaultResponse: string read write

Dispatchers    (declared in TROServer)

Specifies how incoming requests will be processed and dispatched. Depending on the server type, one or multiple dispatchers can be configured to receive messages from the client. Each dispatcher consists of a Message and an optional Name. Also, each dispatcher can be individually enabled or disabled. Each server must have at least one dispatcher configured, in order to be able to process messages.

=Essential Sub-Properties=

  • Message specifies the message format to be used for this dispatcher.
  • Name specifies the name, or possibly the URL for the dispatcher.

In HTTP based servers (such as the TROIndyHTTPServer, the Name will be appended as folder to the server URL allowing the server to make multiple dispatchers available at different URLs.

property Dispatchers: TROMessageDispatchers read write

DispatchMessage (IROTransport, TStream, TStream): Boolean  protected overload    (declared in TROServer)

function DispatchMessage(const aTransport: IROTransport; aRequestStream: TStream; aResponseStream: TStream): Boolean

Parameters:

  • aTransport:
  • aRequestStream:
  • aResponseStream:

DispatchMessage (IROTransport, TStream, TStream, TROResponseOptions): Boolean  protected overload    (declared in TROServer)

function DispatchMessage(const aTransport: IROTransport; aRequestStream: TStream; aResponseStream: TStream; out oResponseOptions: TROResponseOptions): Boolean

Parameters:

  • aTransport:
  • aRequestStream:
  • aResponseStream:
  • oResponseOptions:

DoBeforeDecryptEvent  protected virtual    (declared in TROBaseConnection) obsolete

procedure DoBeforeDecryptEvent(aEncryptedStream: TStream)

Parameters:

  • aEncryptedStream: Stream

Encryption    (declared in TROBaseConnection) obsolete

This is DES based enscryption, it is obsolete because works only for Delphi. Use message envelope AES Encryption Envelope instead.

property Encryption: TROEncryption read write

EncryptStream (TStream, TStream)  protected overload    (declared in TROBaseConnection)

Encrypt stream

procedure EncryptStream(const Source: TStream; const Dest: TStream)

Parameters:

  • Source: Source
  • Dest: Destination

EncryptStream (TStream)  protected overload    (declared in TROBaseConnection)

Encrypt stream

procedure EncryptStream(const Stream: TStream)

Parameters:

  • Stream: Stream

GetDispatchersClass  protected virtual    (declared in TROServer)

Returns TROMessageDispatchers class

function GetDispatchersClass: TROMessageDispatchersClass

GetRODLReader  protected    (declared in TROServer)

function GetRODLReader: TROCustomRODLReader

GetSecure  protected virtual    (declared in TROServer)

Returns SSL state

function GetSecure: Boolean

GetServerType  protected virtual    (declared in TROServer)

Returns current server type

function GetServerType: TROServerType

GetServiceMetaData  protected    (declared in TROServer)

function GetServiceMetaData(aServiceName: string; aOptions: string; out aContentType: string): TStream

Parameters:

  • aServiceName:
  • aOptions:
  • aContentType:

GetTransportObject  protected    (declared in TROServer)

Returns itself.

function GetTransportObject: TObject

IntDispatchMessage  protected    (declared in TROServer)

function IntDispatchMessage(Dispatcher: TROMessageDispatcher; const aTransport: IROTransport; aRequestStream: TStream; aResponseStream: TStream; out oResponseOptions: TROResponseOptions): Boolean

Parameters:

  • Dispatcher:
  • aTransport:
  • aRequestStream:
  • aResponseStream:
  • oResponseOptions:

IsEncryptionUsed  protected    (declared in TROBaseConnection)

Checks if encryption was used

function IsEncryptionUsed: Boolean

IsServiceAllowed  protected    (declared in TROServer)

function IsServiceAllowed(Value: string): Boolean

Parameters:

  • Value:

IsStreamEncrypted  protected    (declared in TROBaseConnection)

Checks state of stream

function IsStreamEncrypted(Source: TStream): Boolean

Parameters:

  • Source: Stream

Notification  protected override    (declared in TROServer)

Forwards notification messages to all owned components.

procedure Notification(AComponent: TComponent; Operation: TOperation)

Parameters:

  • AComponent: component
  • Operation: operation

OnAfterEncrypt    (declared in TROBaseConnection)

Fired after stream was encrypted

property OnAfterEncrypt: TROBaseConnectionOperation read write
delegate: procedure OnAfterEncrypt(Sender: TROBaseConnection; aEncryptedStream: TStream)

OnAfterServerActivate    (declared in TROServer)

Fires after the server has been activated.

property OnAfterServerActivate: TNotifyEvent read write

OnAfterServerDeactivate    (declared in TROServer)

Fires after the server has been deactivated. You can use this event handler to perform any cleanup you might need after the server has stopped processing new requests.

property OnAfterServerDeactivate: TNotifyEvent read write

OnBeforeDecrypt    (declared in TROBaseConnection)

Fired before stream will be decrypted

property OnBeforeDecrypt: TROBaseConnectionOperation read write
delegate: procedure OnBeforeDecrypt(Sender: TROBaseConnection; aEncryptedStream: TStream)

OnBeforeServerActivate    (declared in TROServer)

Fires just before the server is activated. You can use this event handler to perform any initialization you might need before the server starts processing new requests.

property OnBeforeServerActivate: TNotifyEvent read write

OnBeforeServerDeactivate    (declared in TROServer)

Fires just before the server is deactivated. You can use this event handler to perform any cleanup you might need before the server stops processing new requests.

property OnBeforeServerDeactivate: TNotifyEvent read write

OnException

This event is fired if an exception was raised in the worker thread. Users can handle it and respond to those exceptions.

Because polling the account happens in a worker thread, any problems encountered during polling (such as failed authentication with the POP3 server) will not bubble up to the main application. It is therefore important to handle this event if you want to be informed of error conditions.

property OnException: TROExceptionEvent read write
delegate: procedure OnException(aSender: TObject; aExceptionClass: TClass; const aExceptionMessage: string)

OnGetRODLReader    (declared in TROServer)

property OnGetRODLReader: TROGetRODLReader read write
delegate: procedure OnGetRODLReader(Sender: TROServer; var aRODLReader: TROCustomRODLReader)

OnReadFromStream    (declared in TROServer)

Fires after a stream with a request message has been received from the client. The event handler can inspect and possibly modify the stream, before it continues to be processed by the higher levels of the Remoting SDK framework.

property OnReadFromStream: TStreamOperation read write
delegate: procedure OnReadFromStream(aStream: TStream)

OnWriteToStream    (declared in TROServer)

Fires just before a stream with a response message is sent back to the client. The event handler can inspect and possibly modify the stream, before it continues to be sent off to the client.

property OnWriteToStream: TStreamOperation read write
delegate: procedure OnWriteToStream(aStream: TStream)

Pop3CheckInterval

The server will check the POP3 account for new incoming requests with this interval (in seconds). The default value is 60 seconds.

property Pop3CheckInterval: Integer read write

Pop3Client

Provides direct access to the underlying Indy POP3 Client implementation. You can use this property to control advanced settings on the Indy POP3 object, such as setting authentication options. The concrete set of properties available in this object depends on the Indy version in use.
The SmtpClient property can be used to control advanced options.

property Pop3Client: TIdPOP3 read write

Pop3Password

Password to be used to authenticate with the POP3 server.

property Pop3Password: string read write

Pop3ServerAddress

Defines the address of the POP3 server that will be used to collect incoming request emails. This can be a host name or IP address, and should point to the POP3 server where email specified in ServerEmail will be delivered.

property Pop3ServerAddress: string read write

Pop3Username

Specifies the login name to be used to authenticate with the POP3 server.

property Pop3Username: string read write

Port  protected    (declared in TROServer)

The network socket where the server will be listening

property Port: Integer read write

ROFreeNotification    (declared in TROComponent)

Forwards notification messages to all owned components.

procedure ROFreeNotification(aComponent: TComponent)

Parameters:

  • aComponent: component

RORemoveFreeNotification    (declared in TROComponent)

Forwards notification messages to all owned components.

procedure RORemoveFreeNotification(aComponent: TComponent)

Parameters:

  • aComponent: component

SendRemoveNotification  protected    (declared in TROComponent)

Forwards notification messages to all owned components.

procedure SendRemoveNotification(aComponent: TComponent)

Parameters:

  • aComponent: component

ServerEmail

Specifies the email address of the server. This address will be used by the client to deliver emails to this server, and it will also be placed in the "From:" field of sent emails. This email address should match the POP3 account configured for the server, so that the server will be able to access requests directed at it.

property ServerEmail: string read write

ServeRodl    (declared in TROServer)

Specifies whether the server will make the contained RODL file available to clients (true, default) or not. Keep this property set to true if clients need to access the RODL (or WSDL), for example so that third parties (including Service Tester) can import services. Set it to false if you do not want to provide this information, for example for security reasons.

property ServeRodl: Boolean read write

ServiceGroup    (declared in TROServer)

Allows to get/set Service Groups

property ServiceGroup: string read write

SmtpClient

Provides direct access to the underlying Indy SMTP client implementation. You can use this property to control advanced settings on the Indy SMTP object, such as setting authentication options. The concrete set of properties available in this object depends on the Indy version in use.

property SmtpClient: TIdSMTP read write

SmtpServerAddress

Sets the address of the SMTP server that will be used to dispatch outgoing messages. This can be a host name or an IP address, and can be any SMTP server capable of relaying mails to the destination, including an open relay or the ISP's email server.
The SmtpClient property can be used to control advanced options such as authentication.

property SmtpServerAddress: string read write

TriggerReadFromStream  protected    (declared in TROServer)

Fires the OnReadFromStream event

procedure TriggerReadFromStream(aSource: TStream)

Parameters:

  • aSource: stream

TriggerWriteToStream  protected    (declared in TROServer)

Fires the OnReadFromStream event

procedure TriggerWriteToStream(aDest: TStream)

Parameters:

  • aDest: stream

 

Active    (declared in TROServer)

Toggles whether the server ready to receive requests from clients. Depending on the server type, changing this property might open/close a network socket or otherwise toggle whether the server will process incoming requests.

property Active: Boolean read write

DefaultResponse  protected    (declared in TROServer)

Holds the message that will be sent back to the client if it improperly "welcomes" the server.

property DefaultResponse: string read write

Dispatchers    (declared in TROServer)

Specifies how incoming requests will be processed and dispatched. Depending on the server type, one or multiple dispatchers can be configured to receive messages from the client. Each dispatcher consists of a Message and an optional Name. Also, each dispatcher can be individually enabled or disabled. Each server must have at least one dispatcher configured, in order to be able to process messages.

=Essential Sub-Properties=

  • Message specifies the message format to be used for this dispatcher.
  • Name specifies the name, or possibly the URL for the dispatcher.

In HTTP based servers (such as the TROIndyHTTPServer, the Name will be appended as folder to the server URL allowing the server to make multiple dispatchers available at different URLs.

property Dispatchers: TROMessageDispatchers read write

Encryption    (declared in TROBaseConnection) obsolete

This is DES based enscryption, it is obsolete because works only for Delphi. Use message envelope AES Encryption Envelope instead.

property Encryption: TROEncryption read write

Pop3CheckInterval

The server will check the POP3 account for new incoming requests with this interval (in seconds). The default value is 60 seconds.

property Pop3CheckInterval: Integer read write

Pop3Client

Provides direct access to the underlying Indy POP3 Client implementation. You can use this property to control advanced settings on the Indy POP3 object, such as setting authentication options. The concrete set of properties available in this object depends on the Indy version in use.
The SmtpClient property can be used to control advanced options.

property Pop3Client: TIdPOP3 read write

Pop3Password

Password to be used to authenticate with the POP3 server.

property Pop3Password: string read write

Pop3ServerAddress

Defines the address of the POP3 server that will be used to collect incoming request emails. This can be a host name or IP address, and should point to the POP3 server where email specified in ServerEmail will be delivered.

property Pop3ServerAddress: string read write

Pop3Username

Specifies the login name to be used to authenticate with the POP3 server.

property Pop3Username: string read write

Port  protected    (declared in TROServer)

The network socket where the server will be listening

property Port: Integer read write

ServerEmail

Specifies the email address of the server. This address will be used by the client to deliver emails to this server, and it will also be placed in the "From:" field of sent emails. This email address should match the POP3 account configured for the server, so that the server will be able to access requests directed at it.

property ServerEmail: string read write

ServeRodl    (declared in TROServer)

Specifies whether the server will make the contained RODL file available to clients (true, default) or not. Keep this property set to true if clients need to access the RODL (or WSDL), for example so that third parties (including Service Tester) can import services. Set it to false if you do not want to provide this information, for example for security reasons.

property ServeRodl: Boolean read write

ServiceGroup    (declared in TROServer)

Allows to get/set Service Groups

property ServiceGroup: string read write

SmtpClient

Provides direct access to the underlying Indy SMTP client implementation. You can use this property to control advanced settings on the Indy SMTP object, such as setting authentication options. The concrete set of properties available in this object depends on the Indy version in use.

property SmtpClient: TIdSMTP read write

SmtpServerAddress

Sets the address of the SMTP server that will be used to dispatch outgoing messages. This can be a host name or an IP address, and can be any SMTP server capable of relaying mails to the destination, including an open relay or the ISP's email server.
The SmtpClient property can be used to control advanced options such as authentication.

property SmtpServerAddress: string read write

 

constructor Create  override

Standard component constructor

constructor Create(aOwner: TComponent)

Parameters:

  • aOwner: Owner

Assign  override

Copies the contents of another, similar object.

procedure Assign(Source: TPersistent)

Parameters:

  • Source: Instance whose properties will be copied

CheckProperties  override

Validates the server properties.

procedure CheckProperties

DecryptStream (TStream, TStream)  protected overload    (declared in TROBaseConnection)

Decrypt stream

procedure DecryptStream(const Source: TStream; const Dest: TStream)

Parameters:

  • Source: Source
  • Dest: Destination

DecryptStream (TStream)  protected overload    (declared in TROBaseConnection)

Decrypt stream

procedure DecryptStream(const Stream: TStream)

Parameters:

  • Stream: Stream

DispatchMessage (IROTransport, TStream, TStream): Boolean  protected overload    (declared in TROServer)

function DispatchMessage(const aTransport: IROTransport; aRequestStream: TStream; aResponseStream: TStream): Boolean

Parameters:

  • aTransport:
  • aRequestStream:
  • aResponseStream:

DispatchMessage (IROTransport, TStream, TStream, TROResponseOptions): Boolean  protected overload    (declared in TROServer)

function DispatchMessage(const aTransport: IROTransport; aRequestStream: TStream; aResponseStream: TStream; out oResponseOptions: TROResponseOptions): Boolean

Parameters:

  • aTransport:
  • aRequestStream:
  • aResponseStream:
  • oResponseOptions:

DoBeforeDecryptEvent  protected virtual    (declared in TROBaseConnection) obsolete

procedure DoBeforeDecryptEvent(aEncryptedStream: TStream)

Parameters:

  • aEncryptedStream: Stream

EncryptStream (TStream, TStream)  protected overload    (declared in TROBaseConnection)

Encrypt stream

procedure EncryptStream(const Source: TStream; const Dest: TStream)

Parameters:

  • Source: Source
  • Dest: Destination

EncryptStream (TStream)  protected overload    (declared in TROBaseConnection)

Encrypt stream

procedure EncryptStream(const Stream: TStream)

Parameters:

  • Stream: Stream

GetDispatchersClass  protected virtual    (declared in TROServer)

Returns TROMessageDispatchers class

function GetDispatchersClass: TROMessageDispatchersClass

GetRODLReader  protected    (declared in TROServer)

function GetRODLReader: TROCustomRODLReader

GetSecure  protected virtual    (declared in TROServer)

Returns SSL state

function GetSecure: Boolean

GetServerType  protected virtual    (declared in TROServer)

Returns current server type

function GetServerType: TROServerType

GetServiceMetaData  protected    (declared in TROServer)

function GetServiceMetaData(aServiceName: string; aOptions: string; out aContentType: string): TStream

Parameters:

  • aServiceName:
  • aOptions:
  • aContentType:

GetTransportObject  protected    (declared in TROServer)

Returns itself.

function GetTransportObject: TObject

IntDispatchMessage  protected    (declared in TROServer)

function IntDispatchMessage(Dispatcher: TROMessageDispatcher; const aTransport: IROTransport; aRequestStream: TStream; aResponseStream: TStream; out oResponseOptions: TROResponseOptions): Boolean

Parameters:

  • Dispatcher:
  • aTransport:
  • aRequestStream:
  • aResponseStream:
  • oResponseOptions:

IsEncryptionUsed  protected    (declared in TROBaseConnection)

Checks if encryption was used

function IsEncryptionUsed: Boolean

IsServiceAllowed  protected    (declared in TROServer)

function IsServiceAllowed(Value: string): Boolean

Parameters:

  • Value:

IsStreamEncrypted  protected    (declared in TROBaseConnection)

Checks state of stream

function IsStreamEncrypted(Source: TStream): Boolean

Parameters:

  • Source: Stream

Notification  protected override    (declared in TROServer)

Forwards notification messages to all owned components.

procedure Notification(AComponent: TComponent; Operation: TOperation)

Parameters:

  • AComponent: component
  • Operation: operation

ROFreeNotification    (declared in TROComponent)

Forwards notification messages to all owned components.

procedure ROFreeNotification(aComponent: TComponent)

Parameters:

  • aComponent: component

RORemoveFreeNotification    (declared in TROComponent)

Forwards notification messages to all owned components.

procedure RORemoveFreeNotification(aComponent: TComponent)

Parameters:

  • aComponent: component

SendRemoveNotification  protected    (declared in TROComponent)

Forwards notification messages to all owned components.

procedure SendRemoveNotification(aComponent: TComponent)

Parameters:

  • aComponent: component

TriggerReadFromStream  protected    (declared in TROServer)

Fires the OnReadFromStream event

procedure TriggerReadFromStream(aSource: TStream)

Parameters:

  • aSource: stream

TriggerWriteToStream  protected    (declared in TROServer)

Fires the OnReadFromStream event

procedure TriggerWriteToStream(aDest: TStream)

Parameters:

  • aDest: stream

 

OnAfterEncrypt    (declared in TROBaseConnection)

Fired after stream was encrypted

property OnAfterEncrypt: TROBaseConnectionOperation read write
delegate: procedure OnAfterEncrypt(Sender: TROBaseConnection; aEncryptedStream: TStream)

OnAfterServerActivate    (declared in TROServer)

Fires after the server has been activated.

property OnAfterServerActivate: TNotifyEvent read write

OnAfterServerDeactivate    (declared in TROServer)

Fires after the server has been deactivated. You can use this event handler to perform any cleanup you might need after the server has stopped processing new requests.

property OnAfterServerDeactivate: TNotifyEvent read write

OnBeforeDecrypt    (declared in TROBaseConnection)

Fired before stream will be decrypted

property OnBeforeDecrypt: TROBaseConnectionOperation read write
delegate: procedure OnBeforeDecrypt(Sender: TROBaseConnection; aEncryptedStream: TStream)

OnBeforeServerActivate    (declared in TROServer)

Fires just before the server is activated. You can use this event handler to perform any initialization you might need before the server starts processing new requests.

property OnBeforeServerActivate: TNotifyEvent read write

OnBeforeServerDeactivate    (declared in TROServer)

Fires just before the server is deactivated. You can use this event handler to perform any cleanup you might need before the server stops processing new requests.

property OnBeforeServerDeactivate: TNotifyEvent read write

OnException

This event is fired if an exception was raised in the worker thread. Users can handle it and respond to those exceptions.

Because polling the account happens in a worker thread, any problems encountered during polling (such as failed authentication with the POP3 server) will not bubble up to the main application. It is therefore important to handle this event if you want to be informed of error conditions.

property OnException: TROExceptionEvent read write
delegate: procedure OnException(aSender: TObject; aExceptionClass: TClass; const aExceptionMessage: string)

OnGetRODLReader    (declared in TROServer)

property OnGetRODLReader: TROGetRODLReader read write
delegate: procedure OnGetRODLReader(Sender: TROServer; var aRODLReader: TROCustomRODLReader)

OnReadFromStream    (declared in TROServer)

Fires after a stream with a request message has been received from the client. The event handler can inspect and possibly modify the stream, before it continues to be processed by the higher levels of the Remoting SDK framework.

property OnReadFromStream: TStreamOperation read write
delegate: procedure OnReadFromStream(aStream: TStream)

OnWriteToStream    (declared in TROServer)

Fires just before a stream with a response message is sent back to the client. The event handler can inspect and possibly modify the stream, before it continues to be sent off to the client.

property OnWriteToStream: TStreamOperation read write
delegate: procedure OnWriteToStream(aStream: TStream)