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))); }
/// <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); } }
/// <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); }
public static ArrayList Send(int IncidentId, int EMailMessageId) { EMailMessageRow row = new EMailMessageRow(EMailMessageId); return(Send(IncidentId, EMailRouterPop3Box.Load(row.EMailRouterPop3BoxId), EMailMessage.GetPop3Message(row.EmlMessage))); }
/// <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(); } }
/// <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(); } }