/// <summary> /// Gets the outgoing email format body preview. /// </summary> /// <param name="IncidentId">The incident id.</param> /// <returns></returns> public static string GetOutgoingEmailFormatBodyPreview(int issueId) { IncidentBox incidentBox = IncidentBox.Load(Incident.GetIncidentBox(issueId)); string issueTitle = Incident.GetIncidentTitle(issueId); string issueLink = Alerts2.MakeIssueLink(issueId); string issueTicket = TicketUidUtil.Create(incidentBox.IdentifierMask, issueId); StringBuilder sb = new StringBuilder(incidentBox.Document.GeneralBlock.OutgoingEmailFormatBody, 4096); sb.Replace("[=Title=]", issueTitle); sb.Replace("[=Ticket=]", issueTicket); //sb.Replace("[=Text=]", node.Text); string linkStart = string.Format(CultureInfo.InvariantCulture, "<a href=\"{0}\">", HttpUtility.HtmlAttributeEncode(issueLink)); sb.Replace("[=Link=]", linkStart); sb.Replace("[=/Link=]", "</a>"); UserLight currentUser = Security.CurrentUser; if (currentUser != null) { sb.Replace("[=FirstName=]", currentUser.FirstName); sb.Replace("[=LastName=]", currentUser.LastName); sb.Replace("[=Email=]", currentUser.Email); using (IDataReader reader = User.GetUserProfile(currentUser.UserID)) { if (reader.Read()) { sb.Replace("[=Phone=]", reader["Phone"].ToString()); sb.Replace("[=Fax=]", reader["Fax"].ToString()); sb.Replace("[=Mobile=]", reader["Mobile"].ToString()); sb.Replace("[=Position=]", reader["Position"].ToString()); sb.Replace("[=Department=]", reader["Department"].ToString()); sb.Replace("[=Company=]", reader["Company"].ToString()); sb.Replace("[=Location=]", reader["Location"].ToString()); } } } return(sb.ToString()); }
public static void OpenEml(int IncidentId, int EMailMessageId, Stream outputStream) { Pop3Message message = EMailMessage.GetPop3Message(EMailMessageId); IncidentBox incidentBox = IncidentBox.Load(Incident.GetIncidentBox(IncidentId)); EMailRouterPop3Box emailBox = EMailRouterPop3Box.ListInternal(); string SenderName = EMailMessage.GetSenderName(message); string FromEmail = SenderName == string.Empty?emailBox.EMailAddress: string.Format("\"{0}\" <{1}>", SenderName, emailBox.EMailAddress); OutputMessageCreator output = new OutputMessageCreator(message, IncidentId, emailBox.EMailAddress, FromEmail); output.AddRecipient(Security.CurrentUser.UserID); string Subject = (message.Subject == null?string.Empty:message.Subject); if (Subject == string.Empty) { // OZ: Maybe: Set Default Inicdent Title if subject is empty //Subject = Incident.GetIncidentTitle(IncidentId); } if (TicketUidUtil.LoadFromString(Subject) == string.Empty) { output.Subject = string.Format("[{0}] {1}", TicketUidUtil.Create(incidentBox.IdentifierMask, IncidentId), Subject); } OutputMessage outputMsg = (OutputMessage)output.Create()[0]; outputStream.Write(outputMsg.Data, 0, outputMsg.Data.Length); outputStream.Flush(); }
public static ArrayList Send(int IncidentId, EMailRouterPop3Box pop3Box, Pop3Message InMsg, string[] RecipientEmails) { ArrayList retVal = new ArrayList(); IncidentBox incidentBox = IncidentBox.Load(Incident.GetIncidentBox(IncidentId)); EMailRouterIncidentBoxBlock settings = IncidentBoxDocument.Load(incidentBox.IncidentBoxId).EMailRouterBlock; if (pop3Box.IsInternal) { #region Internal -> Extrenal // Internal -> Internal Info // 2009-06-16 OZ: Add Chech send emails to internal users if (settings.AllowEMailRouting) { // 2007-02-12 OZ: "FN LN" <*****@*****.**> string FromEmail = string.Format("\"{0} {1}\" <{2}>", Security.CurrentUser.LastName, Security.CurrentUser.FirstName, 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); } // Load InformationRecipientList // foreach(int infoRecipient in IncidentBoxDocument.Load(incidentBox.IncidentBoxId).EMailRouterBlock.InformationRecipientList) // { // output2Iternal.AddRecipient(infoRecipient); // } foreach (OutputMessage outputMsg in output2Iternal.Create()) { //try //{ SmtpClientUtility.SendMessage(OutgoingEmailServiceType.HelpDeskEmailBox, pop3Box.EMailRouterPop3BoxId, outputMsg.MailFrom, outputMsg.RcptTo, outputMsg.Subject, outputMsg.Data); //} //catch(Exception ex) //{ // System.Diagnostics.Trace.WriteLine(ex); // Log.WriteError(ex.ToString()); //} } } // Internal -> Extrenal string publicEmail = FindEMailRouterPublicEmail(IncidentId); if (publicEmail != string.Empty) { //EMailRouterPop3Box externalPop3Box = EMailRouterPop3Box.Load(realEMailBoxId); OutputMessageCreator output2External = new OutputMessageCreator(InMsg, IncidentId, publicEmail, publicEmail); // Load External Senders // foreach(string exRecipient in EMailMessage.GetExternalSendersByIncidentId(IncidentId)) // { // output2External.AddRecipient(exRecipient); // } // Load External Senders foreach (EMailIssueExternalRecipient exRecipient in EMailIssueExternalRecipient.List(IncidentId)) { output2External.AddRecipient(exRecipient.EMail); } // 2007-03-12 RecipientEmails Addon if (RecipientEmails != null) { foreach (string exItem in RecipientEmails) { int emailUserId = DBUser.GetUserByEmail(exItem, false); if (emailUserId > 0) { if (!retVal.Contains(emailUserId)) { output2External.AddRecipient(exItem); retVal.Add(emailUserId); } } else { output2External.AddRecipient(exItem); } } } // int emailBoxId = EMail.EMailRouterOutputMessage.FindEMailRouterPublicId(IncidentId); foreach (OutputMessage outputMsg in output2External.Create()) { //try //{ SmtpClientUtility.SendMessage(OutgoingEmailServiceType.HelpDeskEmailBox, emailBoxId, outputMsg.MailFrom, outputMsg.RcptTo, outputMsg.Subject, outputMsg.Data); //} //catch(Exception ex) //{ // System.Diagnostics.Trace.WriteLine(ex); // Log.WriteError(ex.ToString()); //} } } #endregion } else { if (!settings.AllowEMailRouting) { return(retVal); } EMailRouterPop3Box internalPop3Box = EMailRouterPop3Box.ListInternal(); if (internalPop3Box == null) { return(retVal); } #region // External -> Internal // External -> Internal string SenderName = EMailMessage.GetSenderName(InMsg); string FromEmail = SenderName == string.Empty?internalPop3Box.EMailAddress: string.Format("\"{0}\" <{1}>", SenderName, internalPop3Box.EMailAddress); OutputMessageCreator output = new OutputMessageCreator(InMsg, IncidentId, internalPop3Box.EMailAddress, FromEmail); string Subject = (InMsg.Subject == null?string.Empty:InMsg.Subject); if (Subject == string.Empty) { // OZ: Maybe: Set Default Inicdent Title if subject is empty //Subject = Incident.GetIncidentTitle(IncidentId); } if (TicketUidUtil.LoadFromString(Subject) == string.Empty) { output.Subject = string.Format("[{0}] {1}", TicketUidUtil.Create(incidentBox.IdentifierMask, IncidentId), Subject); } foreach (int UserId in GetInternalUsersByIncidentId(IncidentId)) { output.AddRecipient(UserId); retVal.Add(UserId); } // IncidentBoxDocument incidentDoc = IncidentBoxDocument.Load(incidentBox.IncidentBoxId); // // foreach(int infoRecipient in incidentDoc.EMailRouterBlock.InformationRecipientList) // { // output.AddRecipient(infoRecipient); // } foreach (OutputMessage outputMsg in output.Create()) { //try //{ SmtpClientUtility.SendMessage(OutgoingEmailServiceType.HelpDeskEmailBox, internalPop3Box.EMailRouterPop3BoxId, 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 void Open(int IncidentId, int EMailMessageId, Stream outputStream) { System.Reflection.Assembly asm = typeof(MsgMessage).Assembly; Pop3Message message = EMailMessage.GetPop3Message(EMailMessageId); IncidentBox incidentBox = IncidentBox.Load(Incident.GetIncidentBox(IncidentId)); EMailRouterPop3Box box = EMailRouterPop3Box.ListInternal(); string receiver = Security.CurrentUser.Email; //EMailMessage.GetSenderEmail(message); string sender = box.EMailAddress; using (Stream stream = asm.GetManifestResourceStream("Mediachase.IBN.Business.Resources.template.msg")) { using (MemoryStream memStream = new MemoryStream()) { using (MsgHelper helper = new MsgHelper(stream)) { helper.SetSenderEmail(sender); //string SenderName = EMailMessage.GetSenderName(message); //helper.SetSenderName(SenderName==string.Empty?sender:SenderName); helper.SetSenderName(sender); string IncidentTitle = Incident.GetIncidentTitle(IncidentId); string IncidentTicket = TicketUidUtil.Create(incidentBox.IdentifierMask, IncidentId); string Subject = (message.Subject == null?string.Empty:message.Subject); if (Subject == string.Empty) { // OZ: Maybe: Set Default Inicdent Title if subject is empty //Subject = Incident.GetIncidentTitle(IncidentId); } if (TicketUidUtil.LoadFromString(Subject) == string.Empty) { Subject = string.Format("[{0}] {1}", TicketUidUtil.Create(incidentBox.IdentifierMask, IncidentId), Subject); } helper.SetReceiverName(Security.CurrentUser.DisplayName); helper.SetDisplayTo(receiver); helper.SetReceiverEmail(receiver); helper.SetCreationTimes(DateTime.UtcNow); helper.SetSubject(Subject); helper.SetBody(message.BodyText); if (message.BodyHtml == null || message.BodyHtml.Trim() == String.Empty) { helper.SetHtmlBody(message.BodyText); } else { helper.SetHtmlBody(message.BodyHtml); } helper.Commit(); helper.createMSG(memStream); memStream.Flush(); memStream.Seek(0, SeekOrigin.Begin); const int bufLen = 1024; byte[] buffer = new byte[bufLen]; int bytesRead; while ((bytesRead = memStream.Read(buffer, 0, bufLen)) > 0) { outputStream.Write(buffer, 0, bytesRead); } outputStream.Flush(); } } } }