/// <summary> /// Gets the default recipint list. /// </summary> /// <param name="Mode">The mode.</param> /// <param name="Params">The params.</param> /// <returns></returns> public static string[] GetDefaultRecipientList(string Mode, NameValueCollection Params) { List <string> retVal = new List <string>(); Mode = Mode.ToLower(); switch (Mode) { case EMailClient.IssueMode: if (Params["IssueId"] == null) { throw new ArgumentNullException("Params[\"IssueId\"]"); } int issueId = int.Parse(Params["IssueId"]); int incidentBoxId = Incident.GetIncidentBox(issueId); IncidentBoxDocument incBoxDoc = IncidentBoxDocument.Load(incidentBoxId); // InternalEmailRecipients if (incBoxDoc.EMailRouterBlock.AllowEMailRouting) { foreach (int userId in Incident.GetInternalEmailRecipients(issueId)) { UserLight user = UserLight.Load(userId); if (!retVal.Contains(user.Email)) { retVal.Add(user.Email); } } } // External Emalil foreach (EMailIssueExternalRecipient exRecipient in EMailIssueExternalRecipient.List(issueId)) { if (!retVal.Contains(exRecipient.EMail)) { retVal.Add(exRecipient.EMail); } } break; default: break; } return(retVal.ToArray()); }
private void BinddgMembers() { dgMembers.Columns[0].HeaderText = LocRM.GetString("tEMail"); EMailIssueExternalRecipient[] erList = EMailIssueExternalRecipient.List(IncidentID); DataTable dt = new DataTable(); dt.Columns.Add(new DataColumn("EMail", typeof(string))); DataRow dr; foreach (EMailIssueExternalRecipient er in erList) { dr = dt.NewRow(); dr["EMail"] = er.EMail; dt.Rows.Add(dr); } DataView dv = dt.DefaultView; dv.Sort = "EMail"; dgMembers.DataSource = dv; dgMembers.DataBind(); }
protected void btnSave_Click(object sender, System.EventArgs e) { DataTable dt = (DataTable)ViewState["Participants"]; Hashtable ht = new Hashtable(); foreach (DataRow dr in dt.Rows) { ht.Add((int)dr["EMailIssueExternalRecipientId"], dr["EMail"].ToString()); } EMailIssueExternalRecipient.Update(IncidentID, ht); if (Request["closeFramePopup"] != null) { CommandParameters cp = new CommandParameters("MC_HDM_RecipEdit"); Mediachase.Ibn.Web.UI.WebControls.CommandHandler.RegisterCloseOpenedFrameScript(this.Page, cp.ToString()); } else { Page.ClientScript.RegisterStartupScript(this.GetType(), Guid.NewGuid().ToString(), "<script language=javascript>" + "try {window.opener.location.href='IncidentView.aspx?IncidentId=" + IncidentID + "';}" + "catch (e){}window.close();</script>"); } }
public static void SendMessage(string[] To, string Subject, string Body, Mediachase.IBN.Business.ControlSystem.DirectoryInfo Attachments, string Mode, NameValueCollection Params) { // Cleanup Temporary files DbEMailTempFile.CleanUp(); #region Validate Arguments if (To == null) { throw new ArgumentNullException("To"); } if (Subject == null) { throw new ArgumentNullException("Subject"); } if (Body == null) { throw new ArgumentNullException("Body"); } //if (To.Length == 0) // throw new ArgumentOutOfRangeException("To", "Email recipient list is empty."); if (Mode == null) { Mode = string.Empty; } if (Params == null) { Params = new NameValueCollection(); } #endregion string FromEmail = string.Empty; switch (Mode) { case EMailClient.IssueMode: case EMailClient.SmtpTestMode: FromEmail = Alerts2.AlertSenderEmail; break; default: FromEmail = Security.CurrentUser.Email; break; } string FullFromEmail = string.Format("\"{0} {1}\" <{2}>", Security.CurrentUser.LastName, Security.CurrentUser.FirstName, FromEmail); using (DbTransaction tran = DbTransaction.Begin()) { EMailMessageLogSetting EmailLogSettings = EMailMessageLogSetting.Current; if (EmailLogSettings.IsActive) { EMailMessageLog.CleanUp(EmailLogSettings.Period); } else { EmailLogSettings = null; } Mode = Mode.ToLower(); #region Pre-format incoming arguments switch (Mode) { case EMailClient.IssueMode: if (Params["IssueId"] == null) { throw new ArgumentNullException("Params[\"IssueId\"]"); } int IssueId = int.Parse(Params["IssueId"]); // TODO: Validate Subject & Ticket if (TicketUidUtil.LoadFromString(Subject) == string.Empty) { IncidentBox incidentBox = IncidentBox.Load(Incident.GetIncidentBox(IssueId)); string IncidentTicket = Incident.GetIdentifier(IssueId); if (incidentBox.Document.GeneralBlock.AllowOutgoingEmailFormat) { StringBuilder sb = new StringBuilder(incidentBox.Document.GeneralBlock.OutgoingEmailFormatSubject, 4096); sb.Replace("[=Title=]", Subject); sb.Replace("[=Ticket=]", IncidentTicket); //sb.Replace("[=Text=]", Body); sb.Replace("[=FirstName=]", Security.CurrentUser.FirstName); sb.Replace("[=LastName=]", Security.CurrentUser.LastName); Subject = sb.ToString(); } else { Subject = string.Format("RE: [{0}] {1}", IncidentTicket, Subject); } } break; default: break; } #endregion Pop3Message msg = Create(FullFromEmail, To, Subject, Body, Attachments); switch (Mode) { case EMailClient.IssueMode: #region Issue int IssueId = int.Parse(Params["IssueId"]); IncidentBox incidentBox = IncidentBox.Load(Incident.GetIncidentBox(IssueId)); bool AllowEMailRouting = true; EMailRouterIncidentBoxBlock settings = IncidentBoxDocument.Load(incidentBox.IncidentBoxId).EMailRouterBlock; if (!settings.AllowEMailRouting) { AllowEMailRouting = false; } EMailRouterPop3Box internalPop3Box = EMailRouterPop3Box.ListInternal(); if (internalPop3Box == null) { AllowEMailRouting = false; } // Register Email Message // OZ: [2007--05-25] Fix Problem Object reference not set to an instance of an object If (internalPop3Box == NULL) int EMailMessageId = EMailMessage.Create(internalPop3Box != null? internalPop3Box.EMailRouterPop3BoxId : EMailRouterOutputMessage.FindEMailRouterPublicId(IssueId), msg); // Register Forume Node int ThreadNodeId = EMailMessage.AddToIncidentMessage(true, IssueId, EMailMessageId, msg); // Send Message if (AllowEMailRouting) { ArrayList excludedUsers = EMailRouterOutputMessage.Send(IssueId, internalPop3Box, msg, To); SystemEvents.AddSystemEvents(SystemEventTypes.Issue_Updated_Forum_MessageAdded, IssueId, -1, excludedUsers); } else { FromEmail = EMailRouterOutputMessage.FindEMailRouterPublicEmail(IssueId); FullFromEmail = string.Format("\"{0} {1}\" <{2}>", Security.CurrentUser.LastName, Security.CurrentUser.FirstName, FromEmail); // Create OutputMessageCreator OutputMessageCreator issueOutput = new OutputMessageCreator(msg, -1, FromEmail, FullFromEmail); // Fill Recipent foreach (string ToItem in To) { issueOutput.AddRecipient(ToItem); } foreach (EMailIssueExternalRecipient exRecipient in EMailIssueExternalRecipient.List(IssueId)) { issueOutput.AddRecipient(exRecipient.EMail); } int emailBoxId = EMail.EMailRouterOutputMessage.FindEMailRouterPublicId(IssueId); //Send Smtp Message foreach (OutputMessage outputMsg in issueOutput.Create()) { SmtpClientUtility.SendMessage(OutgoingEmailServiceType.HelpDeskEmailBox, emailBoxId, outputMsg.MailFrom, outputMsg.RcptTo, outputMsg.Subject, outputMsg.Data); } ArrayList excludedUsers = new ArrayList(); foreach (string ToItem in To) { int emailUserId = DBUser.GetUserByEmail(ToItem, false); if (emailUserId > 0) { excludedUsers.Add(emailUserId); } } SystemEvents.AddSystemEvents(SystemEventTypes.Issue_Updated_Forum_MessageAdded, IssueId, -1, excludedUsers); } #endregion break; case EMailClient.SmtpTestMode: throw new NotImplementedException(); //OutputMessageCreator smtpTestOutput = new OutputMessageCreator(msg, // -1, // FromEmail, // FullFromEmail); //// Fill Recipent //foreach (string ToItem in To) //{ // smtpTestOutput.AddRecipient(ToItem); //} ////Send Smtp Message //foreach (OutputMessage outputMsg in smtpTestOutput.Create()) //{ // //SmtpClientUtility.DirectSendMessage(outputMsg.MailFrom, outputMsg.RcptTo, outputMsg.Subject, outputMsg.Data); // //SmtpBox.SendTestEmail( //} //break; default: #region Default // Create OutputMessageCreator OutputMessageCreator defaultOutput = new OutputMessageCreator(msg, -1, FromEmail, FullFromEmail); // Fill Recipent foreach (string ToItem in To) { defaultOutput.AddRecipient(ToItem); } //Send Smtp Message foreach (OutputMessage outputMsg in defaultOutput.Create()) { SmtpClientUtility.SendMessage(OutgoingEmailServiceType.SendFile, null, outputMsg.MailFrom, outputMsg.RcptTo, outputMsg.Subject, outputMsg.Data); } #endregion break; } if (Attachments != null) { FileStorage.InnerDeleteFolder(Attachments.Id); } tran.Commit(); } }