/// <summary> /// Checks if specfied object value is equal to this. /// </summary> /// <param name="obj">Object to compre.</param> /// <returns>Returns true if specified object value equals this value.</returns> public override bool Equals(object obj) { if (obj != null && obj is ServerReturnMessage) { ServerReturnMessage m = (ServerReturnMessage)obj; if (m.Subject != this.Subject) { return(false); } if (m.BodyTextRtf != this.BodyTextRtf) { return(false); } return(true); } else { return(base.Equals(obj)); } }
/// <summary> /// Default constructor. /// </summary> /// <param name="sysSettings">Reference to system settings.</param> /// <param name="delayedDeliveryWarning">Delayed delivery warning message template.</param> /// <param name="undelivered">Undelivered notice message template</param> internal ServerReturnMessages(System_Settings sysSettings,ServerReturnMessage delayedDeliveryWarning,ServerReturnMessage undelivered) { m_pSysSettings = sysSettings; m_pDelayedDeliveryWarning = delayedDeliveryWarning; m_pUndelivered = undelivered; }
/// <summary> /// Gets server settings and binds them to this. /// </summary> private void Bind() { /* GetSettings <virtualServerID> Responses: +OK <sizeOfData> <data> -ERR <errorText> */ // Call TCP GetSettings m_pVirtualServer.Server.Socket.WriteLine("GetSettings " + m_pVirtualServer.VirtualServerID); string response = m_pVirtualServer.Server.Socket.ReadLine(); if(!response.ToUpper().StartsWith("+OK")){ throw new Exception(response); } int sizeOfData = Convert.ToInt32(response.Split(new char[]{' '},2)[1]); MemoryStream ms = new MemoryStream(); m_pVirtualServer.Server.Socket.ReadSpecifiedLength(sizeOfData,ms); ms.Position = 0; DataSet ds = new DataSet(); CreateSettingsSchema(ds); ds.Clear(); ds.ReadXml(ms); DataRow dr = ds.Tables["Settings"].Rows[0]; //--- AUTH -------------------------------------------// m_pAuth = new Auth_Settings( this, (ServerAuthenticationType_enum)Convert.ToInt32(dr["ServerAuthenticationType"]), dr["ServerAuthWinDomain"].ToString() ); //--- SMTP -------------------------------------------// // Get bindings BindInfo[] smtpBinds = new BindInfo[ds.Tables["SMTP_Bindings"].Rows.Count]; for(int i=0;i<ds.Tables["SMTP_Bindings"].Rows.Count;i++){ DataRow drBinding = ds.Tables["SMTP_Bindings"].Rows[i]; byte[] certificate = null; if(ds.Tables["SMTP_Bindings"].Columns.Contains("SSL_Certificate") && drBinding["SSL_Certificate"] != null && !drBinding.IsNull("SSL_Certificate")){ if(((byte[])drBinding["SSL_Certificate"]).Length > 0){ certificate = (byte[])drBinding["SSL_Certificate"]; } } smtpBinds[i] = new BindInfo( "TCP", IPAddress.Parse(drBinding["IP"].ToString()), Convert.ToInt32(drBinding["Port"]), Convert.ToBoolean(drBinding["SSL"]), certificate ); } m_pSMTP = new SMTP_Settings( this, Convert.ToBoolean(dr["SMTP_Enabled"]), dr["SMTP_HostName"].ToString(), dr["SMTP_GreetingText"].ToString(), dr["SMTP_DefaultDomain"].ToString(), Convert.ToInt32(dr["SMTP_SessionIdleTimeOut"]), Convert.ToInt32(dr["SMTP_Threads"]), Convert.ToInt32(dr["SMTP_MaxConnectionsPerIP"]), Convert.ToInt32(dr["SMTP_MaxBadCommands"]), Convert.ToInt32(dr["MaxRecipients"]), Convert.ToInt32(dr["MaxMessageSize"]), Convert.ToBoolean(dr["SMTP_RequireAuth"]), smtpBinds ); //--- POP3 ------------------------------------------// // Get bindings BindInfo[] pop3Binds = new BindInfo[ds.Tables["POP3_Bindings"].Rows.Count]; for(int i=0;i<ds.Tables["POP3_Bindings"].Rows.Count;i++){ DataRow drBinding = ds.Tables["POP3_Bindings"].Rows[i]; byte[] certificate = null; if(ds.Tables["POP3_Bindings"].Columns.Contains("SSL_Certificate") && drBinding["SSL_Certificate"] != null && !drBinding.IsNull("SSL_Certificate")){ if(((byte[])drBinding["SSL_Certificate"]).Length > 0){ certificate = (byte[])drBinding["SSL_Certificate"]; } } pop3Binds[i] = new BindInfo( "TCP", IPAddress.Parse(drBinding["IP"].ToString()), Convert.ToInt32(drBinding["Port"]), Convert.ToBoolean(drBinding["SSL"]), certificate ); } m_pPOP3 = new POP3_Settings( this, Convert.ToBoolean(dr["POP3_Enabled"]), dr["POP3_HostName"].ToString(), dr["POP3_GreetingText"].ToString(), Convert.ToInt32(dr["POP3_SessionIdleTimeOut"]), Convert.ToInt32(dr["POP3_Threads"]), Convert.ToInt32(dr["POP3_MaxConnectionsPerIP"]), Convert.ToInt32(dr["POP3_MaxBadCommands"]), pop3Binds ); //--- IMAP ------------------------------------------// // Get bindings BindInfo[] imapBinds = new BindInfo[ds.Tables["IMAP_Bindings"].Rows.Count]; for(int i=0;i<ds.Tables["IMAP_Bindings"].Rows.Count;i++){ DataRow drBinding = ds.Tables["IMAP_Bindings"].Rows[i]; byte[] certificate = null; if(ds.Tables["IMAP_Bindings"].Columns.Contains("SSL_Certificate") && drBinding["SSL_Certificate"] != null && !drBinding.IsNull("SSL_Certificate")){ if(((byte[])drBinding["SSL_Certificate"]).Length > 0){ certificate = (byte[])drBinding["SSL_Certificate"]; } } imapBinds[i] = new BindInfo( "TCP", IPAddress.Parse(drBinding["IP"].ToString()), Convert.ToInt32(drBinding["Port"]), Convert.ToBoolean(drBinding["SSL"]), certificate ); } m_pIMAP = new IMAP_Settings( this, Convert.ToBoolean(dr["IMAP_Enabled"]), dr["IMAP_HostName"].ToString(), dr["IMAP_GreetingText"].ToString(), Convert.ToInt32(dr["IMAP_SessionIdleTimeOut"]), Convert.ToInt32(dr["IMAP_Threads"]), Convert.ToInt32(dr["IMAP_MaxConnectionsPerIP"]), Convert.ToInt32(dr["IMAP_MaxBadCommands"]), imapBinds ); //--- Relay ----------------------------------------// m_pRelay = new Relay_Settings( this, Convert.ToBoolean(dr["UseSmartHost"]), dr["SmartHost"].ToString(), Convert.ToInt32(dr["SmartHostPort"]), Convert.ToBoolean(dr["Relay_SmartHost_UseSSL"]), dr["SmartHostUserName"].ToString(), dr["SmartHostPassword"].ToString(), dr["Dns1"].ToString(), dr["Dns2"].ToString(), dr["Relay_HostName"].ToString(), Convert.ToInt32(dr["Relay_SessionIdleTimeOut"]), Convert.ToInt32(dr["MaxRelayThreads"]), Convert.ToInt32(dr["Relay_MaxConnectionsPerIP"]), Convert.ToInt32(dr["RelayInterval"]), Convert.ToInt32(dr["RelayRetryInterval"]), Convert.ToInt32(dr["RelayUndeliveredWarning"]), Convert.ToInt32(dr["RelayUndelivered"]), Convert.ToBoolean(dr["StoreUndeliveredMessages"]), dr["RelayLocalIP"].ToString() ); //--- Fetch messages ------------------------------// m_pFetchMessages = new FetchMessages_Settings( this, Convert.ToBoolean(dr["FetchPOP3_Enabled"]), Convert.ToInt32(dr["FetchPOP3_Interval"]) ); //--- SIP ----------------------------------------// // Get bindings BindInfo[] sipBinds = new BindInfo[ds.Tables["SIP_Bindings"].Rows.Count]; for(int i=0;i<ds.Tables["SIP_Bindings"].Rows.Count;i++){ DataRow drBinding = ds.Tables["SIP_Bindings"].Rows[i]; byte[] certificate = null; if(ds.Tables["SIP_Bindings"].Columns.Contains("SSL_Certificate") && drBinding["SSL_Certificate"] != null && !drBinding.IsNull("SSL_Certificate")){ if(((byte[])drBinding["SSL_Certificate"]).Length > 0){ certificate = (byte[])drBinding["SSL_Certificate"]; } } sipBinds[i] = new BindInfo( drBinding["Protocol"].ToString(), IPAddress.Parse(drBinding["IP"].ToString()), Convert.ToInt32(drBinding["Port"]), Convert.ToBoolean(drBinding["SSL"]), certificate ); } m_pSIP = new SIP_Settings( this, Convert.ToBoolean(dr["SIP_Enabled"]), dr["SIP_HostName"].ToString(), Convert.ToInt32(dr["SIP_MinExpires"]), sipBinds ); //--- Logging ------------------------------------// m_pLogging = new Logging_Settings( this, ConvertEx.ToBoolean(dr["LogSMTPCmds"],false), dr["SMTP_LogPath"].ToString(), ConvertEx.ToBoolean(dr["LogPOP3Cmds"],false), dr["POP3_LogPath"].ToString(), ConvertEx.ToBoolean(dr["LogIMAPCmds"],false), dr["IMAP_LogPath"].ToString(), ConvertEx.ToBoolean(dr["LogRelayCmds"],false), dr["Relay_LogPath"].ToString(), ConvertEx.ToBoolean(dr["LogFetchPOP3Cmds"],false), dr["FetchPOP3_LogPath"].ToString() ); //--- Server return messages string delayedNotifyBodyRtf = "" + "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Verdana;}{\\f1\\fnil\\fcharset186 Verdana;}{\\f2\\fswiss\\fcharset186{\\*\\fname Arial;}Arial Baltic;}{\\f3\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n" + "{\\colortbl ;\\red0\\green64\\blue128;\\red255\\green0\\blue0;\\red0\\green128\\blue0;}\r\n" + "\\viewkind4\\uc1\\pard\\f0\\fs20 This e-mail is generated by the Server(\\cf1 <#relay.hostname>\\cf0 ) to notify you, \\par\r\n" + "\\lang1061\\f1 that \\lang1033\\f0 your message to \\cf1 <#relay.to>\\cf0 dated \\b\\fs16 <#message.header[\"Date:\"]>\\b0 \\fs20 could not be sent at the first attempt.\\par\r\n" + "\\par\r\n" + "Recipient \\i <#relay.to>'\\i0 s Server (\\cf1 <#relay.session_hostname>\\cf0 ) returned the following response: \\cf2 <#relay.error>\\cf0\\par\r\n" + "\\par\r\n" + "\\par\r\n" + "Please note Server will attempt to deliver this message for \\b <#relay.undelivered_after>\\b0 hours.\\par\r\n" + "\\par\r\n" + "--------\\par\r\n" + "\\par\r\n" + "Your original message is attached to this e-mail (\\b data.eml\\b0 )\\par\r\n" + "\\par\r\n" + "\\fs16 The tracking number for this message is \\cf3 <#relay.session_messageid>\\cf0\\fs20\\par\r\n" + "\\lang1061\\f2\\par\r\n" + "\\pard\\lang1033\\f3\\fs17\\par\r\n" + "}\r\n"; ServerReturnMessage delayedDeliveryWarning = new ServerReturnMessage("Delayed delivery notice: <#message.header[\"Subject:\"]>",delayedNotifyBodyRtf); string undeliveredNotifyBodyRtf = "" + "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Verdana;}{\\f1\\fswiss\\fprq2\\fcharset186 Verdana;}{\\f2\\fnil\\fcharset0 Verdana;}{\\f3\\fnil\\fcharset186 Verdana;}{\\f4\\fswiss\\fcharset0 Arial;}{\\f5\\fswiss\\fcharset186{\\*\\fname Arial;}Arial Baltic;}}\r\n" + "{\\colortbl ;\\red0\\green64\\blue128;\\red255\\green0\\blue0;\\red0\\green128\\blue0;}\r\n" + "\\viewkind4\\uc1\\pard\\f0\\fs20 Your message t\\lang1061\\f1 o \\cf1\\lang1033\\f2 <#relay.to>\\cf0\\f0 , dated \\b\\fs16 <#message.header[\"Date:\"]>\\b0\\fs20 , could not be delivered.\\par\r\n" + "\\par\r\n" + "Recipient \\i <#relay.to>'\\i0 s Server (\\cf1 <#relay.session_hostname>\\cf0 ) returned the following response: \\cf2 <#relay.error>\\cf0\\par\r\n" + "\\par\r\n" + "\\par\r\n" + "\\b * Server will not attempt to deliver this message anymore\\b0 .\\par\r\n" + "\\par\r\n" + "--------\\par\r\n" + "\\par\r\n" + "Your original message is attached to this e-mail (\\b data.eml\\b0 )\\par\r\n" + "\\par\r\n" + "\\fs16 The tracking number for this message is \\cf3 <#relay.session_messageid>\\cf0\\fs20\\par\r\n" + "\\lang1061\\f5\\par\r\n" + "\\lang1033\\f2\\par\r\n" + "}\r\n"; ServerReturnMessage undelivered = new ServerReturnMessage("Undelivered notice: <#message.header[\"Subject:\"]>",undeliveredNotifyBodyRtf); if(ds.Tables.Contains("ServerReturnMessages")){ foreach(DataRow dr1 in ds.Tables["ServerReturnMessages"].Rows){ if(dr1["MessageType"].ToString() == "delayed_delivery_warning"){ delayedDeliveryWarning = new ServerReturnMessage(dr1["Subject"].ToString(),dr1["BodyTextRtf"].ToString()); } else if(dr1["MessageType"].ToString() == "undelivered"){ undelivered = new ServerReturnMessage(dr1["Subject"].ToString(),dr1["BodyTextRtf"].ToString()); } } } m_pReturnMessages = new ServerReturnMessages( this, delayedDeliveryWarning, undelivered ); }
/// <summary> /// Loads settings from DataSet. /// </summary> /// <param name="dsSettings">DataSet what contains settings.</param> internal void LoadSettings(DataSet dsSettings) { DataSet ds = new DataSet(); CreateSettingsSchema(ds); ds.Clear(); MemoryStream ms = new MemoryStream(); dsSettings.WriteXml(ms); ms.Position = 0; ds.ReadXml(ms); DataRow dr = ds.Tables["Settings"].Rows[0]; //--- AUTH -------------------------------------------// m_pAuth.AuthenticationType = (ServerAuthenticationType_enum)Convert.ToInt32(dr["ServerAuthenticationType"]); m_pAuth.WinDomain = dr["ServerAuthWinDomain"].ToString(); //--- SMTP -------------------------------------------// // Get bindings BindInfo[] smtpBinds = new BindInfo[ds.Tables["SMTP_Bindings"].Rows.Count]; for(int i=0;i<ds.Tables["SMTP_Bindings"].Rows.Count;i++){ DataRow drBinding = ds.Tables["SMTP_Bindings"].Rows[i]; byte[] certificate = null; if(ds.Tables["SMTP_Bindings"].Columns.Contains("SSL_Certificate") && drBinding["SSL_Certificate"] != null && !drBinding.IsNull("SSL_Certificate")){ if(((byte[])drBinding["SSL_Certificate"]).Length > 0){ certificate = (byte[])drBinding["SSL_Certificate"]; } } smtpBinds[i] = new BindInfo( "TCP", IPAddress.Parse(drBinding["IP"].ToString()), Convert.ToInt32(drBinding["Port"]), Convert.ToBoolean(drBinding["SSL"]), certificate ); } m_pSMTP.Enabled = Convert.ToBoolean(dr["SMTP_Enabled"]); m_pSMTP.HostName = dr["SMTP_HostName"].ToString(); m_pSMTP.GreetingText = dr["SMTP_GreetingText"].ToString(); m_pSMTP.DefaultDomain = dr["SMTP_DefaultDomain"].ToString(); m_pSMTP.SessionIdleTimeOut = Convert.ToInt32(dr["SMTP_SessionIdleTimeOut"]); m_pSMTP.MaximumConnections = Convert.ToInt32(dr["SMTP_Threads"]); m_pSMTP.MaximumConnectionsPerIP = Convert.ToInt32(dr["SMTP_MaxConnectionsPerIP"]); m_pSMTP.MaximumBadCommands = Convert.ToInt32(dr["SMTP_MaxBadCommands"]); m_pSMTP.MaximumRecipientsPerMessage = Convert.ToInt32(dr["MaxRecipients"]); m_pSMTP.MaximumMessageSize = Convert.ToInt32(dr["MaxMessageSize"]); m_pSMTP.RequireAuthentication = Convert.ToBoolean(dr["SMTP_RequireAuth"]); m_pSMTP.Binds = smtpBinds; //--- POP3 ------------------------------------------// // Get bindings BindInfo[] pop3Binds = new BindInfo[ds.Tables["POP3_Bindings"].Rows.Count]; for(int i=0;i<ds.Tables["POP3_Bindings"].Rows.Count;i++){ DataRow drBinding = ds.Tables["POP3_Bindings"].Rows[i]; byte[] certificate = null; if(ds.Tables["POP3_Bindings"].Columns.Contains("SSL_Certificate") && drBinding["SSL_Certificate"] != null && !drBinding.IsNull("SSL_Certificate")){ if(((byte[])drBinding["SSL_Certificate"]).Length > 0){ certificate = (byte[])drBinding["SSL_Certificate"]; } } pop3Binds[i] = new BindInfo( "TCP", IPAddress.Parse(drBinding["IP"].ToString()), Convert.ToInt32(drBinding["Port"]), Convert.ToBoolean(drBinding["SSL"]), certificate ); } m_pPOP3.Enabled = Convert.ToBoolean(dr["POP3_Enabled"]); m_pPOP3.HostName = dr["POP3_HostName"].ToString(); m_pPOP3.GreetingText = dr["POP3_GreetingText"].ToString(); m_pPOP3.SessionIdleTimeOut = Convert.ToInt32(dr["POP3_SessionIdleTimeOut"]); m_pPOP3.MaximumConnections = Convert.ToInt32(dr["POP3_Threads"]); m_pPOP3.MaximumConnectionsPerIP = Convert.ToInt32(dr["POP3_MaxConnectionsPerIP"]); m_pPOP3.MaximumBadCommands = Convert.ToInt32(dr["POP3_MaxBadCommands"]); m_pPOP3.Binds = pop3Binds; //--- IMAP ------------------------------------------// // Get bindings BindInfo[] imapBinds = new BindInfo[ds.Tables["IMAP_Bindings"].Rows.Count]; for(int i=0;i<ds.Tables["IMAP_Bindings"].Rows.Count;i++){ DataRow drBinding = ds.Tables["IMAP_Bindings"].Rows[i]; byte[] certificate = null; if(ds.Tables["IMAP_Bindings"].Columns.Contains("SSL_Certificate") && drBinding["SSL_Certificate"] != null && !drBinding.IsNull("SSL_Certificate")){ if(((byte[])drBinding["SSL_Certificate"]).Length > 0){ certificate = (byte[])drBinding["SSL_Certificate"]; } } imapBinds[i] = new BindInfo( "TCP", IPAddress.Parse(drBinding["IP"].ToString()), Convert.ToInt32(drBinding["Port"]), Convert.ToBoolean(drBinding["SSL"]), certificate ); } m_pIMAP.Enabled = Convert.ToBoolean(dr["IMAP_Enabled"]); m_pIMAP.HostName = dr["IMAP_HostName"].ToString(); m_pIMAP.GreetingText = dr["IMAP_GreetingText"].ToString(); m_pIMAP.SessionIdleTimeOut = Convert.ToInt32(dr["IMAP_SessionIdleTimeOut"]); m_pIMAP.MaximumConnections = Convert.ToInt32(dr["IMAP_Threads"]); m_pIMAP.MaximumConnectionsPerIP = Convert.ToInt32(dr["IMAP_MaxConnectionsPerIP"]); m_pIMAP.MaximumBadCommands = Convert.ToInt32(dr["IMAP_MaxBadCommands"]); m_pIMAP.Binds = imapBinds; //--- Relay ----------------------------------------// m_pRelay.UseSmartHost = Convert.ToBoolean(dr["UseSmartHost"]); m_pRelay.SmartHost = dr["SmartHost"].ToString(); m_pRelay.SmartHostPort = Convert.ToInt32(dr["SmartHostPort"]); m_pRelay.SmartHostSsl = Convert.ToBoolean(dr["Relay_SmartHost_UseSSL"]); m_pRelay.SmartHostUserName = dr["SmartHostUserName"].ToString(); m_pRelay.SmartHostPassword = dr["SmartHostPassword"].ToString(); m_pRelay.Dns1 = dr["Dns1"].ToString(); m_pRelay.Dns2 = dr["Dns2"].ToString(); m_pRelay.HostName = dr["Relay_HostName"].ToString(); m_pRelay.SessionIdleTimeOut = Convert.ToInt32(dr["Relay_SessionIdleTimeOut"]); m_pRelay.MaximumConnections = Convert.ToInt32(dr["MaxRelayThreads"]); m_pRelay.MaximumConnectionsPerIP = Convert.ToInt32(dr["Relay_MaxConnectionsPerIP"]); m_pRelay.RelayInterval = Convert.ToInt32(dr["RelayInterval"]); m_pRelay.RelayRetryInterval = Convert.ToInt32(dr["RelayRetryInterval"]); m_pRelay.SendUndeliveredWarningAfter = Convert.ToInt32(dr["RelayUndeliveredWarning"]); m_pRelay.SendUndeliveredAfter = Convert.ToInt32(dr["RelayUndelivered"]); m_pRelay.StoreUndeliveredMessages = Convert.ToBoolean(dr["StoreUndeliveredMessages"]); m_pRelay.BindIP = IPAddress.Parse(dr["RelayLocalIP"].ToString()); //--- Fetch messages ------------------------------// m_pFetchMessages.Enabled = Convert.ToBoolean(dr["FetchPOP3_Enabled"]); m_pFetchMessages.FetchInterval = Convert.ToInt32(dr["FetchPOP3_Interval"]); //--- SIP ----------------------------------------// m_pSIP.Enabled = Convert.ToBoolean(dr["SIP_Enabled"]); m_pSIP.HostName = dr["SIP_HostName"].ToString(); m_pSIP.MinimumExpires = Convert.ToInt32(dr["SIP_MinExpires"]); // Get bindings BindInfo[] sipBinds = new BindInfo[ds.Tables["SIP_Bindings"].Rows.Count]; for(int i=0;i<ds.Tables["SIP_Bindings"].Rows.Count;i++){ DataRow drBinding = ds.Tables["SIP_Bindings"].Rows[i]; byte[] certificate = null; if(ds.Tables["SIP_Bindings"].Columns.Contains("SSL_Certificate") && drBinding["SSL_Certificate"] != null && !drBinding.IsNull("SSL_Certificate")){ if(((byte[])drBinding["SSL_Certificate"]).Length > 0){ certificate = (byte[])drBinding["SSL_Certificate"]; } } sipBinds[i] = new BindInfo( "TCP", IPAddress.Parse(drBinding["IP"].ToString()), Convert.ToInt32(drBinding["Port"]), Convert.ToBoolean(drBinding["SSL"]), certificate ); } //--- Logging ------------------------------------// m_pLogging.LogSMTP = ConvertEx.ToBoolean(dr["LogSMTPCmds"],false); m_pLogging.SmtpLogsPath = dr["SMTP_LogPath"].ToString(); m_pLogging.LogPOP3 = ConvertEx.ToBoolean(dr["LogPOP3Cmds"],false); m_pLogging.Pop3LogsPath = dr["POP3_LogPath"].ToString(); m_pLogging.LogIMAP = ConvertEx.ToBoolean(dr["LogIMAPCmds"],false); m_pLogging.ImapLogsPath = dr["IMAP_LogPath"].ToString(); m_pLogging.LogRelay = ConvertEx.ToBoolean(dr["LogRelayCmds"],false); m_pLogging.RelayLogsPath = dr["Relay_LogPath"].ToString(); m_pLogging.LogFetchMessages = ConvertEx.ToBoolean(dr["LogFetchPOP3Cmds"],false); m_pLogging.FetchMessagesLogsPath = dr["FetchPOP3_LogPath"].ToString(); //--- Server return messages string delayedNotifyBodyRtf = "" + "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fnil\\fcharset0 Verdana;}{\\f1\\fnil\\fcharset186 Verdana;}{\\f2\\fswiss\\fcharset186{\\*\\fname Arial;}Arial Baltic;}{\\f3\\fnil\\fcharset0 Microsoft Sans Serif;}}\r\n" + "{\\colortbl ;\\red0\\green64\\blue128;\\red255\\green0\\blue0;\\red0\\green128\\blue0;}\r\n" + "\\viewkind4\\uc1\\pard\\f0\\fs20 This e-mail is generated by the Server(\\cf1 <#relay.hostname>\\cf0 ) to notify you, \\par\r\n" + "\\lang1061\\f1 that \\lang1033\\f0 your message to \\cf1 <#relay.to>\\cf0 dated \\b\\fs16 <#message.header[\"Date:\"]>\\b0 \\fs20 could not be sent at the first attempt.\\par\r\n" + "\\par\r\n" + "Recipient \\i <#relay.to>'\\i0 s Server (\\cf1 <#relay.session_hostname>\\cf0 ) returned the following response: \\cf2 <#relay.error>\\cf0\\par\r\n" + "\\par\r\n" + "\\par\r\n" + "Please note Server will attempt to deliver this message for \\b <#relay.undelivered_after>\\b0 hours.\\par\r\n" + "\\par\r\n" + "--------\\par\r\n" + "\\par\r\n" + "Your original message is attached to this e-mail (\\b data.eml\\b0 )\\par\r\n" + "\\par\r\n" + "\\fs16 The tracking number for this message is \\cf3 <#relay.session_messageid>\\cf0\\fs20\\par\r\n" + "\\lang1061\\f2\\par\r\n" + "\\pard\\lang1033\\f3\\fs17\\par\r\n" + "}\r\n"; ServerReturnMessage delayedDeliveryWarning = new ServerReturnMessage("Delayed delivery notice: <#message.header[\"Subject:\"]>",delayedNotifyBodyRtf); string undeliveredNotifyBodyRtf = "" + "{\\rtf1\\ansi\\ansicpg1252\\deff0\\deflang1033{\\fonttbl{\\f0\\fswiss\\fprq2\\fcharset0 Verdana;}{\\f1\\fswiss\\fprq2\\fcharset186 Verdana;}{\\f2\\fnil\\fcharset0 Verdana;}{\\f3\\fnil\\fcharset186 Verdana;}{\\f4\\fswiss\\fcharset0 Arial;}{\\f5\\fswiss\\fcharset186{\\*\\fname Arial;}Arial Baltic;}}\r\n" + "{\\colortbl ;\\red0\\green64\\blue128;\\red255\\green0\\blue0;\\red0\\green128\\blue0;}\r\n" + "\\viewkind4\\uc1\\pard\\f0\\fs20 Your message t\\lang1061\\f1 o \\cf1\\lang1033\\f2 <#relay.to>\\cf0\\f0 , dated \\b\\fs16 <#message.header[\"Date:\"]>\\b0\\fs20 , could not be delivered.\\par\r\n" + "\\par\r\n" + "Recipient \\i <#relay.to>'\\i0 s Server (\\cf1 <#relay.session_hostname>\\cf0 ) returned the following response: \\cf2 <#relay.error>\\cf0\\par\r\n" + "\\par\r\n" + "\\par\r\n" + "\\b * Server will not attempt to deliver this message anymore\\b0 .\\par\r\n" + "\\par\r\n" + "--------\\par\r\n" + "\\par\r\n" + "Your original message is attached to this e-mail (\\b data.eml\\b0 )\\par\r\n" + "\\par\r\n" + "\\fs16 The tracking number for this message is \\cf3 <#relay.session_messageid>\\cf0\\fs20\\par\r\n" + "\\lang1061\\f5\\par\r\n" + "\\lang1033\\f2\\par\r\n" + "}\r\n"; ServerReturnMessage undelivered = new ServerReturnMessage("Undelivered notice: <#message.header[\"Subject:\"]>",undeliveredNotifyBodyRtf); if(ds.Tables.Contains("ServerReturnMessages")){ foreach(DataRow dr1 in ds.Tables["ServerReturnMessages"].Rows){ if(dr1["MessageType"].ToString() == "delayed_delivery_warning"){ delayedDeliveryWarning = new ServerReturnMessage(dr1["Subject"].ToString(),dr1["BodyTextRtf"].ToString()); } else if(dr1["MessageType"].ToString() == "undelivered"){ undelivered = new ServerReturnMessage(dr1["Subject"].ToString(),dr1["BodyTextRtf"].ToString()); } } } m_pReturnMessages = new ServerReturnMessages( this, delayedDeliveryWarning, undelivered ); }
/// <summary> /// Default constructor. /// </summary> /// <param name="sysSettings">Reference to system settings.</param> /// <param name="delayedDeliveryWarning">Delayed delivery warning message template.</param> /// <param name="undelivered">Undelivered notice message template</param> internal ServerReturnMessages(System_Settings sysSettings, ServerReturnMessage delayedDeliveryWarning, ServerReturnMessage undelivered) { m_pSysSettings = sysSettings; m_pDelayedDeliveryWarning = delayedDeliveryWarning; m_pUndelivered = undelivered; }