|
|
(One intermediate revision by the same user not shown) |
Line 5: |
Line 5: |
| ---- | | ---- |
| | | |
− | '''Ultibo SMTP interface unit''' | + | '''Ultibo SMTP Interface unit''' |
− | | + | |
− | ''To be documented''
| + | |
| | | |
| === Constants === | | === Constants === |
Line 389: |
Line 387: |
| | | |
| | | |
− | '''SMTP buffer''' | + | '''SMTP helper classes''' |
| | | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | <code>TSMTPBuffer = class(TObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | + | | [[TSMTPBuffer|<code>TSMTPBuffer = class(TObject)</code>]] |
− | |-
| + | |
− | | <code>constructor Create(ASize:LongWord);</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLock:TCriticalSectionHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FData:Pointer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FSize:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FCount:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FStart:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AcquireLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReleaseLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetCount:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Count:LongWord read GetCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function ReadData:Char;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteData(AChar:Char):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function WriteLock(var ASize:LongWord):Pointer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function WriteUnlock(ACount:LongWord):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| |
| | | |
− | '''SMTP client''' | + | '''SMTP client classes''' |
| | | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | <code>TSMTPClient = class(TWinsock2TCPClient)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | + | | [[TSMTPClient|<code>TSMTPClient = class(TWinsock2TCPClient)</code>]] |
− | |-
| + | |
− | | <code>constructor Create;</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FOnRequest:TSMTPClientNotifyEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnReply:TSMTPClientNotifyEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FOnRequestStart:TNotifyEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnRequestEnd:TNotifyEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FAuthenticated:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FBuffer:TSMTPBuffer;</code>
| + | |
− | | Buffer for received data
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>function GetReply(var AReply:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function SendRequest(const ARequest:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property OnRequest:TSMTPClientNotifyEvent read FOnRequest write FOnRequest;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnReply:TSMTPClientNotifyEvent read FOnReply write FOnReply;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property OnRequestStart:TNotifyEvent read FOnRequestStart write FOnRequestStart;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnRequestEnd:TNotifyEvent read FOnRequestEnd write FOnRequestEnd;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Authenticated:Boolean read FAuthenticated;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Buffer:TSMTPBuffer read FBuffer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function DoConn(const AHost,APort:String; var AReply:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DoHelo(const AHost:String; var AReply:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DoEhlo(const AHost:String; var AReply:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DoAuth(const AProtocol,AUsername,APassword:String; var AReply:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DoMail(const ASender:String; var AReply:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DoRcpt(const AReceiver:String; var AReply:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DoVrfy(const AAddress:String; var AReply:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DoBeginData(var AReply:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DoSendData(const AData:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DoEndData(var AReply:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DoQuit(var AReply:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DoRset(var AReply:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DoTime(var AReply:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DoNoop(var AReply:String):Boolean;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| |
| | | |
− | '''SMTP connection''' | + | '''SMTP server classes''' |
| | | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | <code>TSMTPConnection = class(TListObject)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | + | | [[TSMTPConnection|<code>TSMTPConnection = class(TListObject)</code>]] |
− | |-
| + | |
− | | <code>constructor Create;</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | | <code>destructor Destroy; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FLock:TCriticalSectionHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FHandle:LongWord;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FRxByteCount:Int64;</code>
| + | |
− | | Bytes Recv Count from Connection
| + | |
− | |-
| + | |
− | | <code>FTxByteCount:Int64;</code>
| + | |
− | | Bytes Sent Count to Connection
| + | |
− | |-
| + | |
− | | <code>FRequestCount:Int64;</code>
| + | |
− | | Requests Recv Count from Connection
| + | |
− | |-
| + | |
− | | <code>FReplyCount:Int64;</code>
| + | |
− | | Replies Sent Count to Connection
| + | |
− | |-
| + | |
− | | <code>FRequestTime:TDateTime;</code>
| + | |
− | | Last Request Time
| + | |
− | |-
| + | |
− | | <code>FReplyTime:TDateTime;</code>
| + | |
− | | Last Reply Time
| + | |
− | |-
| + | |
− | | <code>FRemoteAddress:String;</code>
| + | |
− | | Address of Remote Client
| + | |
− | |-
| + | |
− | | <code>FStatus:LongWord;</code>
| + | |
− | | None,Conn,Auth,Helo,Mail,Rcpt,Data etc
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FAuthenticated:Boolean;</code>
| + | |
− | | Current authentication state
| + | |
− | |-
| + | |
− | | <code>FUsername:String;</code>
| + | |
− | | Current Username
| + | |
− | |-
| + | |
− | | <code>FPassword:String;</code>
| + | |
− | | Current Password
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FThread:TThread;</code>
| + | |
− | | TWinsock2TCPServerThread
| + | |
− | |-
| + | |
− | | <code>FBuffer:TSMTPBuffer;</code>
| + | |
− | | Buffer for received data
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function AcquireLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function ReleaseLock:Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetHandle(AHandle:LongWord);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRxByteCount:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetRxByteCount(const ARxByteCount:Int64);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetTxByteCount:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetTxByteCount(const ATxByteCount:Int64);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRequestCount:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetRequestCount(const ARequestCount:Int64);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetReplyCount:Int64;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetReplyCount(const AReplyCount:Int64);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRequestTime:TDateTime;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetRequestTime(const ARequestTime:TDateTime);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetReplyTime:TDateTime;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetReplyTime(const AReplyTime:TDateTime);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetRemoteAddress:String;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetRemoteAddress(const ARemoteAddress:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetStatus(AStatus:LongWord);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetAuthenticated(AAuthenticated:Boolean);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetUsername:String;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetUsername(const AUsername:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function GetPassword:String;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure SetPassword(const APassword:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure SetThread(AThread:TThread);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property Handle:LongWord read FHandle write SetHandle;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property RxByteCount:Int64 read GetRxByteCount write SetRxByteCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property TxByteCount:Int64 read GetTxByteCount write SetTxByteCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property RequestCount:Int64 read GetRequestCount write SetRequestCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property ReplyCount:Int64 read GetReplyCount write SetReplyCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property RequestTime:TDateTime read GetRequestTime write SetRequestTime;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property ReplyTime:TDateTime read GetReplyTime write SetReplyTime;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property RemoteAddress:String read GetRemoteAddress write SetRemoteAddress;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Status:LongWord read FStatus write SetStatus;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Authenticated:Boolean read FAuthenticated write SetAuthenticated;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Username:String read GetUsername write SetUsername;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Password:String read GetPassword write SetPassword;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property Thread:TThread read FThread write SetThread;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property Buffer:TSMTPBuffer read FBuffer;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure IncrementRxByteCount(const ARxByteCount:Int64);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure IncrementTxByteCount(const ATxByteCount:Int64);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure IncrementRequestCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure IncrementReplyCount;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| + | {| class="wikitable" style="font-size: 14px; text-align: left; width: 100%; height: 50px;" |
− | | + | |
− | '''SMTP listener'''
| + | |
− | | + | |
− | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial;">
| + | |
− | | + | |
− | <code>TSMTPListener = class(TWinsock2TCPListener)</code>
| + | |
− | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;">
| + | |
− | {| class="wikitable" style="font-size: 14px; background: white;"
| + | |
| |- | | |- |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div> | + | | [[TSMTPListener|<code>TSMTPListener = class(TWinsock2TCPListener)</code>]] |
− | |-
| + | |
− | | <code>constructor Create;</code> | + | |
− | | style="width: 50%;"|
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''private'''</div>
| + | |
− | |-
| + | |
− | | <code>FOnConnected:TSMTPConnectionEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnDisconnected:TSMTPConnectionEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FOnCheckHost:TSMTPHostEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnCheckCount:TSMTPCountEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FOnRequest:TSMTPNotifyEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnReply:TSMTPNotifyEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>FOnConn:TSMTPRequestEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnHelo:TSMTPRequestEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnEhlo:TSMTPRequestEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnAuth:TSMTPAuthenticateEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnMail:TSMTPRequestEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnRcpt:TSMTPRequestEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnVrfy:TSMTPRequestEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnBeginData:TSMTPRequestEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnData:TSMTPRequestEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnEndData:TSMTPRequestEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnQuit:TSMTPRequestEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnRset:TSMTPRequestEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnTime:TSMTPRequestEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>FOnNoop:TSMTPRequestEvent;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''protected'''</div>
| + | |
− | |-
| + | |
− | | <code>procedure DoConnect(AThread:TWinsock2TCPServerThread); override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure DoDisconnect(AThread:TWinsock2TCPServerThread); override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function DoCheckHost(AThread:TWinsock2TCPServerThread):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function DoCheckCount(AThread:TWinsock2TCPServerThread):Boolean; virtual;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function DoExecute(AThread:TWinsock2TCPServerThread):Boolean; override;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>procedure DoConn(AThread:TWinsock2TCPServerThread);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure DoHelo(AThread:TWinsock2TCPServerThread; const AHost:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure DoEhlo(AThread:TWinsock2TCPServerThread; const AHost:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure DoAuth(AThread:TWinsock2TCPServerThread; const AParams:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure DoMail(AThread:TWinsock2TCPServerThread; const ASender:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure DoRcpt(AThread:TWinsock2TCPServerThread; const ARecipient:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure DoVrfy(AThread:TWinsock2TCPServerThread; const AAddress:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure DoBeginData(AThread:TWinsock2TCPServerThread);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure DoData(AThread:TWinsock2TCPServerThread; const AData:String);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure DoEndData(AThread:TWinsock2TCPServerThread);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure DoQuit(AThread:TWinsock2TCPServerThread);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure DoRset(AThread:TWinsock2TCPServerThread);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure DoTime(AThread:TWinsock2TCPServerThread);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>procedure DoNoop(AThread:TWinsock2TCPServerThread);</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>function GetRequest(AThread:TWinsock2TCPServerThread;var ARequest:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>function SendReply(AThread:TWinsock2TCPServerThread;const AReply:String):Boolean;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|<div style="font-family: monospace,courier;">'''public'''</div>
| + | |
− | |-
| + | |
− | | <code>property OnConnected:TSMTPConnectionEvent read FOnConnected write FOnConnected;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnDisconnected:TSMTPConnectionEvent read FOnDisconnected write FOnDisconnected;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property OnCheckHost:TSMTPHostEvent read FOnCheckHost write FOnCheckHost;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnCheckCount:TSMTPCountEvent read FOnCheckCount write FOnCheckCount;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property OnRequest:TSMTPNotifyEvent read FOnRequest write FOnRequest;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnReply:TSMTPNotifyEvent read FOnReply write FOnReply;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | |colspan="2"|
| + | |
− | |-
| + | |
− | | <code>property OnConn:TSMTPRequestEvent read FOnConn write FOnConn;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnHelo:TSMTPRequestEvent read FOnHelo write FOnHelo;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnEhlo:TSMTPRequestEvent read FOnEhlo write FOnEhlo;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnAuth:TSMTPAuthenticateEvent read FOnAuth write FOnAuth;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnMail:TSMTPRequestEvent read FOnMail write FOnMail;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnRcpt:TSMTPRequestEvent read FOnRcpt write FOnRcpt;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnVrfy:TSMTPRequestEvent read FOnVrfy write FOnVrfy;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnBeginData:TSMTPRequestEvent read FOnBeginData write FOnBeginData;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnData:TSMTPRequestEvent read FOnData write FOnData;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnEndData:TSMTPRequestEvent read FOnEndData write FOnEndData;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnQuit:TSMTPRequestEvent read FOnQuit write FOnQuit;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnRset:TSMTPRequestEvent read FOnRset write FOnRset;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnTime:TSMTPRequestEvent read FOnTime write FOnTime;</code>
| + | |
− | |
| + | |
− | |-
| + | |
− | | <code>property OnNoop:TSMTPRequestEvent read FOnNoop write FOnNoop;</code>
| + | |
− | |
| + | |
| |- | | |- |
| |} | | |} |
− | </div></div>
| |
| <br /> | | <br /> |
| | | |