public static IncidentInfo CreateMapping(int EMailMessageId)
        {
            // Load Message Info
            EMailMessageInfo mi = EMailMessageInfo.Load(EMailMessageId);

            // Load Emal Box
            EMailRouterPop3Box emailBox = EMailRouterPop3Box.Load(mi.EMailRouterPop3BoxId);

            // Load Mapping Handler By EMail Box
            IEMailIncidentMapping mappingHandler = EMailIncidentMappingHandler.LoadHandler(emailBox.Settings.SelectedHandlerId);

            // Mapping
            return(mappingHandler.Create(emailBox, EMailMessage.GetPop3Message(EMailMessageId)));
        }
Esempio n. 2
0
        /// <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);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Determines whether this instance can activate the specified E mail router POP3 box I.
        /// </summary>
        /// <param name="EMailRouterPop3BoxI">The E mail router POP3 box I.</param>
        /// <returns>
        ///     <c>true</c> if this instance can activate the specified E mail router POP3 box I; otherwise, <c>false</c>.
        /// </returns>
        public static bool CanActivate(int EMailRouterPop3BoxI)
        {
            EMailRouterPop3Box box = EMailRouterPop3Box.Load(EMailRouterPop3BoxI);

            return(box.IsInternal || box.Settings.DefaultEMailIncidentMappingBlock.DefaultCreator != -1);
        }
Esempio n. 4
0
        public static ArrayList Send(int IncidentId, int EMailMessageId)
        {
            EMailMessageRow row = new EMailMessageRow(EMailMessageId);

            return(Send(IncidentId, EMailRouterPop3Box.Load(row.EMailRouterPop3BoxId), EMailMessage.GetPop3Message(row.EmlMessage)));
        }
Esempio n. 5
0
        /// <summary>
        /// Copies to incident.
        /// </summary>
        /// <param name="emailMessageId">The email message id.</param>
        /// <param name="incidentId">The incident id.</param>
        public static void CopyToIncident(int emailMessageId, int incidentId)
        {
            using (DbTransaction tran = DbTransaction.Begin())
            {
                // Remove from pending
                PendingEMailMessageRow.DeleteByEMailMessageId(emailMessageId);

                // Load Pop3 Message
                EMailMessageInfo   msgInfo  = EMailMessageInfo.Load(emailMessageId);
                EMailRouterPop3Box emailBox = EMailRouterPop3Box.Load(msgInfo.EMailRouterPop3BoxId);

                Pop3Message msg = EMailMessage.GetPop3Message(emailMessageId);

                // Add User to White Lits
                string SenderEmail = EMailMessage.GetSenderEmail(msg);
                //if(!WhiteListItem.Contains(SenderEmail))

                if (PortalConfig.UseAntiSpamFilter && PortalConfig.AutoFillWhiteList)
                {
                    WhiteListItem.Create(SenderEmail);
                }


                int creatorId, issueBoxId;
                using (IDataReader reader = Incident.GetIncident(incidentId))
                {
                    reader.Read();

                    creatorId  = (int)reader["CreatorId"];
                    issueBoxId = (int)reader["IncidentBoxId"];
                }

                int       stateId, managerId, responsibleId;
                bool      isResposibleGroup;
                ArrayList users = new ArrayList();
                Issue2.GetIssueBoxSettings(issueBoxId, out stateId, out managerId, out responsibleId, out isResposibleGroup, users);

                UserLight prevUser = LogOnCreator(creatorId, msg);

                int ThreadNodeId = AddToIncidentMessage(emailBox.IsInternal, incidentId, emailMessageId, msg);

                if (ProcessXIbnHeaders(incidentId, ThreadNodeId, msg))
                {
                    ArrayList excludeUsers = EMailRouterOutputMessage.Send(incidentId, emailBox, msg);

                    // O.R. [2008-09-09]: Exclude inactive users
                    if (responsibleId > 0 && User.GetUserActivity(responsibleId) != User.UserActivity.Active)
                    {
                        responsibleId = -1;
                    }
                    ArrayList activeUsers = new ArrayList();
                    foreach (int userId in users)
                    {
                        if (User.GetUserActivity(userId) == User.UserActivity.Active)
                        {
                            activeUsers.Add(userId);
                        }
                    }
                    //

                    Issue2.SendAlertsForNewIssue(incidentId, managerId, responsibleId, activeUsers, excludeUsers);
                }

                tran.Commit();
            }
        }
Esempio n. 6
0
        /// <summary>
        /// Approves the pending.
        /// </summary>
        /// <param name="EMailMessageId">The E mail message id.</param>
        public static void ApprovePending(int EMailMessageId)
        {
            // Stop Double Approve
            if (!PendingEMailMessageRow.Contains(EMailMessageId))
            {
                return;
            }

            using (DbTransaction tran = DbTransaction.Begin())
            {
                // Remove from pending
                PendingEMailMessageRow.DeleteByEMailMessageId(EMailMessageId);

                // Load Pop3 Message
                EMailMessageInfo   msgInfo  = EMailMessageInfo.Load(EMailMessageId);
                EMailRouterPop3Box emailBox = EMailRouterPop3Box.Load(msgInfo.EMailRouterPop3BoxId);

                Pop3Message msg = EMailMessage.GetPop3Message(EMailMessageId);

                // Add User to White Lits
                string SenderEmail = EMailMessage.GetSenderEmail(msg);
                //if(!WhiteListItem.Contains(SenderEmail))

                if (PortalConfig.UseAntiSpamFilter && PortalConfig.AutoFillWhiteList)
                {
                    WhiteListItem.Create(SenderEmail);
                }

                string TicketUID = TicketUidUtil.LoadFromString(msg.Subject == null ? string.Empty : msg.Subject);

                if (TicketUID == string.Empty)
                {
                    int IncidentId = CreateNewIncident(EMailMessageId, emailBox, msg);

                    // Automaticaly by Incident.CreateFromEmail
                    //EMailRouterOutputMessage.Send(IncidentId, emailBox, msg);
                }
                else
                {
                    // Assign By Ticket
                    int IncidentId = FindIncidentByTicket(TicketUID);

                    if (IncidentId != -1)
                    {
                        int creatorId, issueBoxId;
                        using (IDataReader reader = Incident.GetIncident(IncidentId))
                        {
                            reader.Read();

                            creatorId  = (int)reader["CreatorId"];
                            issueBoxId = (int)reader["IncidentBoxId"];
                        }

                        int       stateId, managerId, responsibleId;
                        bool      isResposibleGroup;
                        ArrayList users = new ArrayList();
                        Issue2.GetIssueBoxSettings(issueBoxId, out stateId, out managerId, out responsibleId, out isResposibleGroup, users);

                        UserLight prevUser = LogOnCreator(creatorId, msg);

                        int ThreadNodeId = AddToIncidentMessage(emailBox.IsInternal, IncidentId, EMailMessageId, msg);

                        if (ProcessXIbnHeaders(IncidentId, ThreadNodeId, msg))
                        {
                            ArrayList excludeUsers = EMailRouterOutputMessage.Send(IncidentId, emailBox, msg);

                            // O.R. [2008-09-09]: Exclude inactive users
                            if (responsibleId > 0 && User.GetUserActivity(responsibleId) != User.UserActivity.Active)
                            {
                                responsibleId = -1;
                            }
                            ArrayList activeUsers = new ArrayList();
                            foreach (int userId in users)
                            {
                                if (User.GetUserActivity(userId) == User.UserActivity.Active)
                                {
                                    activeUsers.Add(userId);
                                }
                            }
                            //

                            Issue2.SendAlertsForNewIssue(IncidentId, managerId, responsibleId, activeUsers, excludeUsers);
                        }
                    }
                    else
                    {
                        IncidentId = CreateNewIncident(EMailMessageId, emailBox, msg);

                        // Automaticaly by Incident.CreateFromEmail
                        //EMailRouterOutputMessage.Send(IncidentId, emailBox, msg);
                    }
                }
                tran.Commit();
            }
        }