⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 idreplysmtp.pas

📁 photo.163.com 相册下载器 多线程下载
💻 PAS
📖 第 1 页 / 共 2 页
字号:
{ $HDR$}
{**********************************************************************}
{ Unit archived using Team Coherence                                   }
{ Team Coherence is Copyright 2002 by Quality Software Components      }
{                                                                      }
{ For further information / comments, visit our WEB site at            }
{ http://www.TeamCoherence.com                                         }
{**********************************************************************}
{}
{ $Log:  19235: IdReplySMTP.pas
{
{   Rev 1.24    10/26/2004 10:39:54 PM  JPMugaas
{ Updated refs.
}
{
{   Rev 1.23    10/4/2004 3:16:44 PM  BGooijen
{ Added constructor
}
{
{   Rev 1.22    8/3/2004 11:49:56 AM  JPMugaas
{ Fix for issue where 2.0.0 was always being set even if it should not have
{ been set.
}
{
{   Rev 1.21    7/27/2004 7:18:20 PM  JPMugaas
{ Fixed the TIdReplySMTP object as per Bas's suggestion.  He told me that we
{ were overriding the wrong object.
{ 
{ I also fixed the Assign so it will work properly.
}
{
{   Rev 1.20    7/24/04 1:04:48 PM  RLebeau
{ Bug fix for TIdReplySMTP.AssignTo(). The logic was backwards
}
{
{   Rev 1.19    5/31/04 12:47:02 PM  RLebeau
{ Bug fixes for TIdSMTPEnhancedCode.AssignTo() and TIdReplySMTP.AssignTo()
}
{
{   Rev 1.18    5/18/04 2:39:52 PM  RLebeau
{ Changed TIdRepliesSMTP constructor back to using 'override'
}
{
{   Rev 1.17    5/18/04 11:21:54 AM  RLebeau
{ Changed TIdRepliesSMTP constructor to use 'reintroduce' instead
}
{
{   Rev 1.16    5/16/04 5:27:32 PM  RLebeau
{ Added TIdRepliesSMTP class
}
{
{   Rev 1.15    2004.02.03 5:45:44 PM  czhower
{ Name changes
}
{
{   Rev 1.14    2004.01.29 12:07:54 AM  czhower
{ .Net constructor problem fix.
}
{
{   Rev 1.13    2004.01.23 10:09:54 PM  czhower
{ REmoved unneded check because of CharIsInSet functinoalty. Also was a short
{ circuit which is not permitted.
}
{
{   Rev 1.12    1/22/2004 4:23:02 PM  JPMugaas
{ Undid a set change that didn't work.
}
{
{   Rev 1.11    1/22/2004 4:51:40 PM  SPerry
{ fixed set problems
}
{
{   Rev 1.10    1/3/2004 8:05:54 PM  JPMugaas
{ Bug fix:  Sometimes, replies will appear twice due to the way functionality
{ was enherited.
}
{
{   Rev 1.9    2003.10.18 9:42:14 PM  czhower
{ Boatload of bug fixes to command handlers.
}
{
    Rev 1.8    10/17/2003 12:58:54 AM  DSiders
  Added localization comments.
}
{
{   Rev 1.7    2003.09.20 10:38:42 AM  czhower
{ Bug fix to allow clearing code field (Return to default value)
}
{
{   Rev 1.6    6/5/2003 04:54:24 AM  JPMugaas
{ Reworkings and minor changes for new Reply exception framework.
}
{
    Rev 1.5    5/30/2003 8:46:28 PM  BGooijen
}
{
{   Rev 1.4    5/26/2003 12:22:08 PM  JPMugaas
}
{
{   Rev 1.3    5/25/2003 03:45:16 AM  JPMugaas
}
{
{   Rev 1.2    5/25/2003 02:46:16 AM  JPMugaas
}
{
{   Rev 1.1    5/23/2003 04:52:30 AM  JPMugaas
{ Work started on TIdDirectSMTP to support enhanced error codes.
}
{
{   Rev 1.0    5/22/2003 05:24:52 PM  JPMugaas
{ RFC 2034 descendant of TIdRFCReply for IdSMTP.  This also includes some
{ extended error code constants.
}
unit IdReplySMTP;

interface
uses
  Classes,
  IdException,
  IdReply,
  IdReplyRFC,
  IdTStrings;

const
  ValidClassChars = ['2','4','5'];
  ValidClassVals = [2,4,5];
  CLASS_DEF = 2;
  AVAIL_DEF = False;
  NODETAILS = 0;
  PARTSEP = '.';

type
  TIdSMTPEnhancedCode = class(TPersistent)
  protected
    FStatusClass : Cardinal;
    FSubject : Cardinal;
    FDetails : Cardinal;
    FAvailable : Boolean;
    procedure AssignTo(ADest: TPersistent); override;
    function IsValidReplyCode(const AText : String) : Boolean;
    function GetReplyAsStr : String;
    procedure SetReplyAsStr(const AText : String);
    procedure SetStatusClass(const AValue: Cardinal);
    procedure SetAvailable(const AValue: Boolean);
  public
    constructor Create;
  published
    property StatusClass : Cardinal read FStatusClass write SetStatusClass default CLASS_DEF;
    property Subject : Cardinal read FSubject write FSubject default NODETAILS;
    property Details : Cardinal read FDetails write FDetails default NODETAILS;
    property Available : Boolean read FAvailable write SetAvailable default AVAIL_DEF;
    property ReplyAsStr : String read GetReplyAsStr write SetReplyAsStr;
  end;

  TIdReplySMTP = class(TIdReplyRFC)
  protected
    FEnhancedCode : TIdSMTPEnhancedCode;
    procedure AssignTo(ADest: TPersistent); override;
    procedure SetEnhancedCode(AValue : TIdSMTPEnhancedCode);
    function GetFormattedReply: TIdStrings; override;
    procedure SetFormattedReply(const AValue: TIdStrings); override;
  public
    constructor Create(ACollection: TCollection); override;
    constructor Create( ACollection: TCollection; AReplyTexts: TIdReplies ); override;
    destructor Destroy; override;
    procedure RaiseReplyError; override;
    procedure SetEnhReply(const ANumericCode : Integer; const AEnhReply, AText : String);
  published
    property EnhancedCode : TIdSMTPEnhancedCode read FEnhancedCode write SetEnhancedCode;
  end;

  TIdRepliesSMTP = class(TIdRepliesRFC)
  public
    constructor Create(AOwner: TPersistent); override;
  end;

  //note that this is here so we don't have to put this unit in an implementaiton clause
  //and both TIdSMTP and TIdDirectSMTP share this.
  EIdSMTPReplyError = class(EIdReplyRFCError)
  protected
    FEnhancedCode : TIdSMTPEnhancedCode;
  public
     constructor CreateError(const AErrCode: Integer;
      AEnhanced : TIdSMTPEnhancedCode;
      const AReplyMessage: string);  reintroduce;
     destructor Destroy; override;
     property EnhancedCode : TIdSMTPEnhancedCode read FEnhancedCode;
   end;

type
  EIdSMTPReply = class(EIdException);
  EIdSMTPReplyInvalidReplyString = class(EIdSMTPReply);
  EIdSMTPReplyInvalidClass = class(EIdSMTPReply);

//suggested extended replies
const
//{ From RFC 3463 Enhanced Mail System Status Codes
  Id_EHR_USE_STARTTLS = '5.7.0'; //required by RFC 2487   {do not localize}
//X.0.0 Other undefined Status
  Id_EHR_GENERIC_OK = '2.0.0';                            {do not localize}
  Id_EHR_GENERIC_TRANS = '4.0.0';                         {do not localize}
  Id_EHR_GENERIC_PERM  = '5.0.0';                         {do not localize}
  //X.1.0 Other address status
  Id_EHR_MSG_OTH_OK = '2.1.0';                            {do not localize}
  Id_EHR_MSG_OTH_TRANS = '4.1.0';                         {do not localize}
  Id_EHR_MSG_OTH_PERM = '5.1.0';                          {do not localize}
  //X.1.1 Bad destination mailbox address
  Id_EHR_MSG_BAD_DEST = '5.1.1';                          {do not localize}
  //X.1.2 Bad destination system address
  Id_EHR_MSG_BAD_DEST_SYST = '5.1.2';                     {do not localize}
  //X.1.3 Bad destination mailbox address syntax
  Id_EHR_MSG_BAD_DEST_SYNTAX = '5.1.3';                   {do not localize}
  //X.1.4 Destination mailbox address ambiguous
  Id_EHR_MSG_AMBIG_DEST = '5.1.4';                        {do not localize}
  //X.1.5 Destination address valid
  Id_EHR_MSG_VALID_DEST = '2.1.5';                        {do not localize}
  //X.1.6 Destination mailbox has moved, No forwarding address
  Id_EHR_MSG_DEST_MOVED_NOFORWARD = '2.1.6';              {do not localize}
  //X.1.7 Bad sender抯 mailbox address syntax
  Id_EHR_MSG_SENDER_BOX_SYNTAX = '5.1.7';                 {do not localize}
  //X.1.8 Bad sender抯 system address
  Id_EHR_MSG_BAD_SENDER_ADDR = '5.1.8';                   {do not localize}
  //X.2.0 Other or undefined mailbox status
  Id_EHR_MB_OTHER_STATUS_OK = '2.2.0';                    {do not localize}
  Id_EHR_MB_OTHER_STATUS_TRANS = '4.2.0';                 {do not localize}
  Id_EHR_MB_OTHER_STATUS_PERM = '5.2.0';                  {do not localize}
  //X.2.1 Mailbox disabled, not accepting messages
  Id_EHR_MB_DISABLED_TEMP = '4.2.1';                      {do not localize}
  Id_EHR_MB_DISABLED_PERM = '5.2.1';                      {do not localize}
  //X.2.2 Mailbox full - user can probably delete some messages to make more room
  Id_EHR_MB_FULL = '4.2.2';                               {do not localize}
  //X.2.3 Message length exceeds administrative limit - probably can not be fixed by a user deleting messages
  Id_EHR_MB_MSG_LEN_LIMIT = '5.2.3';                      {do not localize}
  //X.2.4 Mailing list expansion problem
  Id_EHR_MB_ML_EXPAN_TEMP = '4.2.4';                      {do not localize}
  Id_EHR_MB_ML_EXPAN_PERM = '5.2.4';                      {do not localize}
  //X.3.0 Other or undefined mail system status
  Id_EHR_MD_OTHER_OK = '2.3.0';                           {do not localize}
  Id_EHR_MD_OTHER_TRANS = '4.3.0';                        {do not localize}
  Id_EHR_MD_OTHER_PERM = '5.3.0';                         {do not localize}
  //X.3.1 Mail system full
  Id_EHR_MD_MAIL_SYSTEM_FULL = '4.3.1';                   {do not localize}
  //X.3.2 System not accepting network messages
  Id_EHR_MD_NOT_EXCEPTING_TRANS = '4.3.2';                {do not localize}
  Id_EHR_MD_NOT_EXCEPTING_PERM = '5.3.2';                 {do not localize}
  //X.3.3 System not capable of selected features
  Id_EHR_MD_NOT_CAPABLE_FEAT_TRANS = '4.3.3';             {do not localize}
  Id_EHR_MD_NOT_CAPABLE_FEAT_PERM = '5.3.3';              {do not localize}
  //X.3.4 Message too big for system
  Id_EHR_MD_TOO_BIG = '5.3.4';                            {do not localize}
  //X.3.5 System incorrectly configured
  Id_EHR_MD_INCORRECT_CONFIG_TRANS = '4.3.5';             {do not localize}
  Id_EHR_MD_INCORRECT_CONFIG_PERM = '5.3.5';              {do not localize}
  //X.4.0 Other or undefined network or routing status
  Id_EHR_NR_OTHER_OK = '2.4.0';                           {do not localize}
  Id_EHR_NR_OTHER_TRANS = '4.4.0';                        {do not localize}
  Id_EHR_NR_OTHER_PERM = '5.4.0';                         {do not localize}
  //X.4.1 No answer from host
  Id_EHR_NR_NO_ANSWER = '4.4.1';                          {do not localize}
  //X.4.2 Bad connection
  Id_EHR_NR_BAD_CONNECTION = '4.4.2';                     {do not localize}
  //X.4.3 Directory server failure
  Id_EHR_NR_DIR_SVR_FAILURE = '4.4.3';                    {do not localize}
  //X.4.4 Unable to route
  Id_EHR_NR_UNABLE_TO_ROUTE_TRANS = '4.4.4';              {do not localize}
  Id_EHR_NR_UNABLE_TO_ROUTE_PERM = '5.4.4';               {do not localize}
  //X.4.5 Mail system congestion
  Id_EHR_NR_SYSTEM_CONGESTION = '4.4.5';                  {do not localize}
  //X.4.6 Routing loop detected
  Id_EHR_NR_LOOP_DETECTED = '4.4.6';                      {do not localize}
  //X.4.7 Delivery time expired
  Id_EHR_NR_DELIVERY_EXPIRED_TEMP = '4.4.7';              {do not localize}
  Id_EHR_NR_DELIVERY_EXPIRED_PERM = '5.4.7';              {do not localize}
   //X.5.0 Other or undefined protocol status
   Id_EHR_PR_OTHER_OK = '2.5.0';                          {do not localize}
   Id_EHR_PR_OTHER_TEMP = '4.5.0';                        {do not localize}
   Id_EHR_PR_OTHER_PERM = '5.5.0';                        {do not localize}
   //X.5.1 Invalid command
   Id_EHR_PR_INVALID_CMD = '5.5.1';                       {do not localize}
   //X.5.2 Syntax error
   Id_EHR_PR_SYNTAX_ERR = '5.5.2';                        {do not localize}
    //X.5.3 Too many recipients - note that this is given if segmentation isn't possible
   Id_EHR_PR_TOO_MANY_RECIPIENTS_TEMP = '4.5.3';          {do not localize}
   Id_EHR_PR_TOO_MANY_RECIPIENTS_PERM = '5.5.3';          {do not localize}
   //X.5.4 Invalid command arguments
   Id_EHR_PR_INVALID_CMD_ARGS = '5.5.4';                  {do not localize}
   //X.5.5 Wrong protocol version
   Id_EHR_PR_WRONG_VER_TRANS = '4.5.5';                   {do not localize}
   Id_EHR_PR_WRONG_VER_PERM = '5.5.5';                    {do not localize}
   //X.6.0 Other or undefined media error
   Id_EHR_MED_OTHER_OK = '2.6.0';                         {do not localize}
   Id_EHR_MED_OTHER_TRANS = '4.6.0';                      {do not localize}
   Id_EHR_MED_OTHER_PERM = '5.6.0';                       {do not localize}
   //X.6.1 Media not supported
   Id_EHR_MED_NOT_SUPPORTED = '5.6.1';                    {do not localize}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -