public void SingleCompanyInvoke()
        {
            if (!License.HelpDesk)
            {
                return;
            }

            // OZ: [2007-01-29] EMailMessageLog
            EmailLogSettings = EMailMessageLogSetting.Current;
            if (EmailLogSettings.IsActive)
            {
                EMailMessageLog.CleanUp(EmailLogSettings.Period);
            }
            else
            {
                EmailLogSettings = null;
            }
            //

            // Process External Box
            foreach (EMailRouterPop3Box pop3Box in EMailRouterPop3Box.ListExternal())
            {
                if (pop3Box.Activity.IsActive)
                {
                    EMailRouterPop3BoxMessageLoader loader = new EMailRouterPop3BoxMessageLoader(pop3Box);

                    loader.Error      += new ExceptionAbortEventHandler(OnMessageLoaderError);
                    loader.NewMessage += new EventHandler(OnNewMessage);


                    loader.ReceiveMessages();
                }
            }

            // Process Internal Box
            EMailRouterPop3Box internalPop3Box = EMailRouterPop3Box.ListInternal();

            if (internalPop3Box != null && internalPop3Box.Activity.IsActive)
            {
                EMailRouterPop3BoxMessageLoader loader = new EMailRouterPop3BoxMessageLoader(internalPop3Box);

                loader.Error      += new ExceptionAbortEventHandler(OnMessageLoaderError);
                loader.NewMessage += new EventHandler(OnNewMessage);

                loader.ReceiveMessages();
            }

            //Process send email from SMTP queue
            //try
            //{
            //    SmtpClientUtility.ProcessSendMessages();
            //}
            //catch (Exception)
            //{
            //    // TODO:
            //    //PortalConfig.SmtpSettings.IsChecked = false;
            //    throw;
            //}
        }
Beispiel #2
0
 public static bool CanDeleteUser(int UserId)
 {
     foreach (EMailRouterPop3Box box in EMailRouterPop3Box.ListExternal())
     {
         if (box.Settings.DefaultEMailIncidentMappingBlock.DefaultCreator == UserId)
         {
             return(false);
         }
     }
     return(true);
 }
Beispiel #3
0
        /// <summary>
        /// Checks the specified file name.
        /// </summary>
        /// <param name="fileName">Name of the file.</param>
        /// <returns></returns>
        public static EMailMessageAntiSpamRuleRusult Check(string fileName)
        {
            System.IO.StreamReader st = new System.IO.StreamReader(fileName, System.Text.Encoding.Default);
            string strmsg             = st.ReadToEnd();

            byte[] buffer             = System.Text.Encoding.Default.GetBytes(strmsg);
            System.IO.MemoryStream ms = new System.IO.MemoryStream(buffer, 0, buffer.Length, true, true);

            Pop3Message msg = new Pop3Message(ms);

            return(Check(EMailRouterPop3Box.ListExternal()[0], msg));
        }
        /// <summary>
        /// Sends the outgoing.
        /// </summary>
        /// <param name="IncidentId">The incident id.</param>
        /// <param name="email">The email.</param>
        /// <returns></returns>
        //public static ArrayList SendOutgoing(int IncidentId, EMailOutgoingMessage email)
        //{
        //    ArrayList retVal = new ArrayList();

        //    // TODO: Not implemented yet

        //    return retVal;
        //}


        /// <summary>
        /// Sends the outgoing.
        /// </summary>
        /// <param name="IncidentId">The incident id.</param>
        /// <returns></returns>
//        public static ArrayList SendOutgoing(int IncidentId, int ThreadNodeId)
//        {
//            // 2007-02-15: OZ: New Messagew Addon
//            Issue2.SetNewMessage(IncidentId, false);
//            //

//            ArrayList retVal = new ArrayList();

//            IncidentBox incidentBox = IncidentBox.Load( Incident.GetIncidentBox(IncidentId));

//            bool AllowEMailRouting = true;

//            EMailRouterIncidentBoxBlock settings = IncidentBoxDocument.Load(incidentBox.IncidentBoxId).EMailRouterBlock;
//            if(!settings.AllowEMailRouting)
//                AllowEMailRouting = false;

//            EMailRouterPop3Box internalPop3Box = EMailRouterPop3Box.ListInternal();
//            if(internalPop3Box==null)
//                AllowEMailRouting = false;

//            EMailRouterPop3Box pop3Box = internalPop3Box;

//            BaseIbnContainer foContainer = BaseIbnContainer.Create("FileLibrary",string.Format("IncidentId_{0}",IncidentId));
//            ForumStorage forumStorage = (ForumStorage)foContainer.LoadControl("ForumStorage");

//            ForumThreadNodeInfo node = forumStorage.GetForumThreadNode(ThreadNodeId);

//            BaseIbnContainer fsContainer = BaseIbnContainer.Create("FileLibrary",string.Format("ForumNodeId_{0}",node.Id));
//            FileStorage fileStorage = (FileStorage)fsContainer.LoadControl("FileStorage");

//            string IncidentTitle = Incident.GetIncidentTitle(IncidentId);
//            string IncidentTicket = TicketUidUtil.Create(incidentBox.IdentifierMask,IncidentId);

//            string subject;

//            if(incidentBox.Document.GeneralBlock.AllowOutgoingEmailFormat)
//            {
//                StringBuilder sb = new StringBuilder(incidentBox.Document.GeneralBlock.OutgoingEmailFormatSubject,4096);

//                sb.Replace("[=Title=]", IncidentTitle);
//                sb.Replace("[=Ticket=]", IncidentTicket);
//                sb.Replace("[=Text=]", node.Text);
//                sb.Replace("[=FirstName=]", Security.CurrentUser.FirstName);
//                sb.Replace("[=LastName=]", Security.CurrentUser.LastName);

//                subject = sb.ToString();
//            }
//            else
//            {
//                subject = string.Format("RE: [{0}] {1}",
//                    IncidentTicket,
//                    IncidentTitle);
//            }

//            // Create Pop3 Message Stream
//            MemoryStream emlMessage = new MemoryStream();
//            byte[] tmpBuffer = null;

//            #region Fill Pop3 Message Stream
//            // Create Pop3 Message Headers
//            StringBuilder sbHeaders = new StringBuilder();

//            sbHeaders.AppendFormat("Date: {0}", GetEMailCreationDate()).Append("\r\n");
//            sbHeaders.Append("From: [email protected]").Append("\r\n");
//            sbHeaders.Append("To: [email protected]").Append("\r\n");
//            sbHeaders.AppendFormat("Subject: {0}", Rfc822HeaderCollection.Encode2AsciiString(subject)).Append("\r\n");
//            sbHeaders.Append("MIME-Version: 1.0").Append("\r\n");
//            sbHeaders.Append("Content-Type: multipart/mixed; boundary=\"----------7E143249668A83E\"").Append("\r\n");
//            sbHeaders.Append("\r\n");

//            tmpBuffer = Encoding.ASCII.GetBytes(sbHeaders.ToString());
//            emlMessage.Write(tmpBuffer,0, tmpBuffer.Length);

//            // Create Pop3 Message Entry
//            StringBuilder sbMessage = new StringBuilder();

//            sbMessage.Append("------------7E143249668A83E").Append("\r\n");

//            // IF MESSAGE IS PLAIN TEXT
//            //sbMessage.Append("Content-Type: text/plain; charset=utf-8").Append("\r\n");

//            // IF MESSAGE IS HTML TEXT
//            sbMessage.Append("Content-Type: text/html; charset=utf-8").Append("\r\n");

//            sbMessage.Append("Content-Transfer-Encoding: base64").Append("\r\n");
//            sbMessage.Append("\r\n");

//            string FullMessage;

////			if(incidentBox.Document.GeneralBlock.AllowOutgoingEmailFormat)
////			{
////				StringBuilder sb = new StringBuilder(incidentBox.Document.GeneralBlock.OutgoingEmailFormatBody,4096);
////
////				sb.Replace("[=Title=]", IncidentTitle);
////				sb.Replace("[=Ticket=]", IncidentTicket);
////				sb.Replace("[=Text=]", node.Text);
////				sb.Replace("[=FirstName=]", Security.CurrentUser.FirstName);
////				sb.Replace("[=LastName=]", Security.CurrentUser.LastName);
////
////				FullMessage = sb.ToString();
////			}
////			else
////			{
//                FullMessage = node.Text;
////			}

//            sbMessage.Append(Convert.ToBase64String(Encoding.UTF8.GetBytes(FullMessage))).Append("\r\n");

//            tmpBuffer = Encoding.ASCII.GetBytes(sbMessage.ToString());
//            emlMessage.Write(tmpBuffer,0, tmpBuffer.Length);

//            Hashtable contentTypeHash = new Hashtable();

//            using(IDataReader reader = ContentType.GetListContentTypes())
//            {
//                while(reader.Read())
//                {
//                    contentTypeHash.Add(((string)reader["Extension"]).ToLower(), (string)reader["ContentTypeString"]);
//                }
//            }


//            // Add Pop3 Message Attachements
//            foreach(Mediachase.IBN.Business.ControlSystem.FileInfo  fileInfo in fileStorage.GetFiles())
//            {
//                StringBuilder sbFile = new StringBuilder();

//                sbFile.Append("------------7E143249668A83E").Append("\r\n");
//                sbFile.AppendFormat("Content-Type: {0}; name=\"{1}\"", fileInfo.FileBinaryContentType, Rfc822HeaderCollection.Encode2AsciiString(fileInfo.Name)).Append("\r\n");
//                sbFile.Append("Content-Transfer-Encoding: base64").Append("\r\n");
//                sbFile.AppendFormat("Content-Disposition: attachment; filename=\"{0}\"", Rfc822HeaderCollection.Encode2AsciiString(fileInfo.Name)).Append("\r\n");
//                sbFile.Append("\r\n");

//                using(MemoryStream fs = new MemoryStream())
//                {
//                    FileStorage.LightLoadFile(fileInfo, fs);
//                    fs.Capacity = (int)fs.Length;

//                    sbFile.Append(Convert.ToBase64String(fs.GetBuffer()));
//                }

//                sbFile.Append("\r\n");

//                tmpBuffer = Encoding.ASCII.GetBytes(sbFile.ToString());
//                emlMessage.Write(tmpBuffer,0, tmpBuffer.Length);
//            }

//            // Add Final Line
//            tmpBuffer = Encoding.ASCII.GetBytes("------------7E143249668A83E--\r\n\r\n");
//            emlMessage.Write(tmpBuffer,0, tmpBuffer.Length);

//            #endregion

//            Pop3Message InMsg = new Pop3Message(emlMessage);

//            // Send Email
//            #region Internal -> Internal Info

//            // Internal -> Internal Info
//            if(AllowEMailRouting)
//            {
//                // 2007-02-12 OZ: "FN LN" <*****@*****.**>
//                string FromEmail = string.Format("\"{0} {1}\" <{2}>",
//                    Security.CurrentUser.FirstName,
//                    Security.CurrentUser.LastName,
//                    pop3Box.EMailAddress);

//                OutputMessageCreator output2Iternal = new OutputMessageCreator(InMsg, IncidentId, pop3Box.EMailAddress, FromEmail);

//                // Exclude a message sender
//                output2Iternal.AddIgnoreRecipient(EMailMessage.GetSenderEmail(InMsg));

//                // Load InternalUser
//                foreach(int UserId in GetInternalUsersByIncidentId(IncidentId))
//                {
//                    output2Iternal.AddRecipient(UserId);
//                    retVal.Add(UserId);
//                }

//                foreach(OutputMessage outputMsg in output2Iternal.Create())
//                {
//                    try
//                    {
//                        SmtpClient.SendMessage(outputMsg.MailFrom, outputMsg.RcptTo, outputMsg.Subject, outputMsg.Data);
//                    }
//                    catch(Exception ex)
//                    {
//                        System.Diagnostics.Trace.WriteLine(ex);
//                        Log.WriteError(ex.ToString());
//                    }
//                }
//            }
//            #endregion

//            #region Internal -> Extrenal
//            // Internal -> Extrenal
//            string fromEMailAddress =  FindEMailRouterPublicEmail(IncidentId);

//            if(fromEMailAddress!=string.Empty)
//            {
//                //EMailRouterPop3Box externalPop3Box = EMailRouterPop3Box.Load(realEMailBoxId);

//                OutputMessageCreator output2External = new OutputMessageCreator(InMsg, IncidentId, fromEMailAddress, fromEMailAddress);

//                // Load External Senders
//                //foreach(string exRecipient in EMailMessage.GetExternalSendersByIncidentId(IncidentId))

//                // 2006-12-12 OZ: Load External Senders
//                foreach(EMailIssueExternalRecipient exRecipient in EMailIssueExternalRecipient.List(IncidentId))
//                {
//                    output2External.AddRecipient(exRecipient.EMail);
//                }

//                foreach(OutputMessage outputMsg in output2External.Create())
//                {
//                    try
//                    {
//                        SmtpClient.SendMessage(outputMsg.MailFrom, outputMsg.RcptTo, outputMsg.Subject, outputMsg.Data);
//                    }
//                    catch(Exception ex)
//                    {
//                        System.Diagnostics.Trace.WriteLine(ex);
//                        Log.WriteError(ex.ToString());
//                    }
//                }

//            }
//            #endregion

//            return retVal;
//        }

        public static string FindEMailRouterPublicEmail(int IncidentId)
        {
            int realEMailBoxId = EMailMessage.GetEMailRouterPop3BoxIdByIssueId(IncidentId);

            if (realEMailBoxId == -1)
            {
                EMailRouterPop3Box[] emailBoxList = EMailRouterPop3Box.ListExternal();

                // OZ 2009-01-20 Find EmailBox mapped with IncidentBox
                int incidentBoxId = Incident.GetIncidentBox(IncidentId);

                foreach (EMailRouterPop3Box emailBox in emailBoxList)
                {
                    if (emailBox.Settings.DefaultEMailIncidentMappingBlock.IncidentBoxId == incidentBoxId)
                    {
                        return(emailBox.EMailAddress);
                    }
                }
                //

                // try to find active
                foreach (EMailRouterPop3Box emailBox in emailBoxList)
                {
                    if (emailBox.Activity.IsActive)
                    {
                        return(emailBox.EMailAddress);
                    }
                }

                if (emailBoxList.Length > 0)
                {
                    return(emailBoxList[0].EMailAddress);
                }

                if (Security.CurrentUser != null)
                {
                    return(Security.CurrentUser.Email);
                }

                return(Alerts2.AlertSenderEmail);
            }
            else
            {
                EMailRouterPop3Box emailBox = EMailRouterPop3Box.Load(realEMailBoxId);
                return(emailBox.EMailAddress);
            }
        }
Beispiel #5
0
        public static void ReplaseUser(int OldUserId, int NewUserId)
        {
            using (DbTransaction tran = DbTransaction.Begin())
            {
                foreach (EMailRouterPop3Box box in EMailRouterPop3Box.ListExternal())
                {
                    EMailRouterPop3BoxSettings settings = box.Settings;
                    if (settings.DefaultEMailIncidentMappingBlock.DefaultCreator == OldUserId)
                    {
                        settings.DefaultEMailIncidentMappingBlock.DefaultCreator = NewUserId;
                        EMailRouterPop3BoxSettings.Save(settings);
                    }
                }

                tran.Commit();
            }
        }
        /// <summary>
        /// Finds the E mail router public id.
        /// </summary>
        /// <param name="IncidentId">The incident id.</param>
        /// <returns></returns>
        public static int FindEMailRouterPublicId(int IncidentId)
        {
            int realEMailBoxId = EMailMessage.GetEMailRouterPop3BoxIdByIssueId(IncidentId);

            if (realEMailBoxId == -1)
            {
                EMailRouterPop3Box[] emailBoxList = EMailRouterPop3Box.ListExternal();

                // OZ 2009-01-20 Find EmailBox mapped with IncidentBox
                int incidentBoxId = Incident.GetIncidentBox(IncidentId);

                foreach (EMailRouterPop3Box emailBox in emailBoxList)
                {
                    if (emailBox.Settings.DefaultEMailIncidentMappingBlock.IncidentBoxId == incidentBoxId)
                    {
                        return(emailBox.EMailRouterPop3BoxId);
                    }
                }
                //

                // try to find firt active
                foreach (EMailRouterPop3Box emailBox in emailBoxList)
                {
                    if (emailBox.Activity.IsActive)
                    {
                        return(emailBox.EMailRouterPop3BoxId);
                    }
                }
                //

                if (emailBoxList.Length > 0)
                {
                    return(emailBoxList[0].EMailRouterPop3BoxId);
                }

                return(-1);
            }
            else
            {
                return(realEMailBoxId);
            }
        }