/// <summary> /// Method to send mails after any user action on ticket /// </summary> /// <param name="ticket">ticket object on which user has taken some action</param> /// <param name="mailType">Mail type to be send</param> public static void SendMail(Tickets ticket, MailMessageType mailType, List <Attachment> attachments = null, Users user = null, Users userBeforeEdit = null, Applications application = null, Configuration configurationSettings = null, List <Users> usersToSendMail = null) { //Mail object which will hold Mail type and ticket object Mail mail = new Mail(); //Assign mailtype and ticket object mail.MailType = mailType; mail.ticket = ticket; mail.attachments = attachments; mail.user = user; mail.userBeforeEdit = userBeforeEdit; mail.application = application; mail.configurationSettings = configurationSettings; mail.otherUsersToReceiveMail = usersToSendMail; //get login url from configuration settings string LoginUrl = GetValueLFromConfigSettings(ConfigConstants.SiteDomainName); mail.LoginURL = LoginUrl; mail.UserNameOfEmailAccount = GetValueLFromConfigSettings(ConfigConstants.EmailUserName); mail.UserPasswordOfEmailAccount = GetValueLFromConfigSettings(ConfigConstants.EmailPassword); //Call send mail from mail controller using (MailController mailController = new MailController()) { mailController.SendMail(mail); } }
public IMessageBuilder CreateMessageBuilder(MailMessageType messageType) { if (messageType == MailMessageType.Registration) { return(new RegisterMessageBuilder()); } return(new AutoGeneratedEmailWithDefaultContent()); }
//method to send email to all emie users private void SendEmailToAllEMIEUsers(MailMessageType mailMessageType, Users users) { using (UserController userController = new UserController()) { List <Users> emieUsers = userController.GetAllUsersOfRole(UserRole.EMIEChampion); CommonFunctions.SendMail(null, mailMessageType, null, users, null, null, null, emieUsers); } }
public void MessageBodyIsBuildByMessageBuilderReturnedFromFactory() { MailMessageType mailMessageType = It.IsAny <MailMessageType>(); var mailContext = new MailContext() { EmailContent = new MailContent(mailMessageType) }; IMessageBuilder messageBuilder = Mock.Of <IMessageBuilder>(builder => builder.BuildMessageContent(mailContext) == "test message"); MailService mailService = new MailService(Mock.Of <IClient>(), Mock.Of <IMessageBuilderFactory>(factory => factory.CreateMessageBuilder(mailMessageType) == messageBuilder)); MailContext context = mailService.BuildMessage(mailContext); Mock.Get(messageBuilder).Verify(x => x.BuildMessageContent(mailContext), Times.Once); context.EmailContent.MessageBody.Should().Be("test message"); }
public void SendMail(string mails, MailMessageType messageType) { var client = new SmtpClient { Port = 587, Host = "smtp.gmail.com", EnableSsl = true, Timeout = 10000, DeliveryMethod = SmtpDeliveryMethod.Network, UseDefaultCredentials = false, Credentials = new NetworkCredential("*****@*****.**", "P@ssw0rD2016") }; var mailInfo = MessageInfo[messageType]; var mm = new MailMessage("*****@*****.**", mails, mailInfo.Subject, mailInfo.Message) { BodyEncoding = Encoding.UTF8, DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure }; client.Send(mm); }
public MimeMessage CreateMessage(MailMessageType messageType, string languageCode) { throw new NotImplementedException(); }
public MailContent(MailMessageType messageType) { MessageType = messageType; }
public MailSender(MailMessageType messageType, ulong sender_guidlow_or_entry, MailStationery stationery = MailStationery.Default) { m_messageType = messageType; m_senderId = sender_guidlow_or_entry; m_stationery = stationery; }
/// <summary> /// Method to get templates of mail depending on mail type and send mail /// </summary> /// <param name="mail">Mail object which will hold mail type and ticket details and attachments</param> /// <param name="templatePath">templates path in AppData folder of website</param> public void SendMails(dynamic mail, string templatePath) { try { // Initialize config object config = new Configurations(templatePath); // Get mail message objects MailMessage mailMessage = new MailMessage(); string subject; // Get message body string message = GetMailBody(mail, out subject); // Assign subject, body etc mailMessage.Subject = subject; mailMessage.Body = message; mailMessage.IsBodyHtml = config.HtmlMail; // Get mail type MailMessageType mailType = (MailMessageType)mail.MailType; // Get 'To' for mails depending on mail type switch (mailType) { // When changes request is initiated case MailMessageType.RequesterRaisedRequest: // When change request is RollBack case MailMessageType.RequestRollbackOnSandBox: // When changes request is Failed On TestMachine case MailMessageType.RequestFailedOnTestMachine: mailMessage.To.Add(mail.ticket.RequestedBy.Email); break; // When change request is sent for approval case MailMessageType.RequestSentForApproval: // When change request is approved case MailMessageType.RequestApproved: // When change request is Rejected case MailMessageType.RequestRejected: // When change request is Delegated case MailMessageType.RequestDelegated: // When change request is RollBack case MailMessageType.RequestRollbackOnProduction: // When change request is SignOff case MailMessageType.SignOff: // Send Reminder for Approval case MailMessageType.SendReminder: // When change request is RollBack case MailMessageType.RequestFailedOnProdMachine: // When Production changes are scheduled case MailMessageType.RequestScheduledForProduction: // When Production changes done through scheduler case MailMessageType.ProductionChangesDoneThroughScheduler: mailMessage.To.Add(mail.ticket.RequestedBy.Email); foreach (var approval in mail.ticket.Approvals) { mailMessage.To.Add(approval.Approver.Email); } break; // Need this comment // When Production Changes Freeze Schedule Edited // case MailMessageType.ProductionChangesFreezeScheduleEdited: // // When Application Added // case MailMessageType.ApplicationAdded: // When User registration is done case MailMessageType.UserRegistered: // When User requested for registration case MailMessageType.RegistrationRequested: if (mail.otherUsersToReceiveMail != null) { for (int index = 0; index < mail.otherUsersToReceiveMail.Count; index++) { string email = mail.otherUsersToReceiveMail[index].Email; mailMessage.To.Add(email); } } break; // When User is Edited case MailMessageType.UserEdited: // When User is Activated case MailMessageType.UserActivated: // When User is Deleted case MailMessageType.UserDeactivated: // When User is Added case MailMessageType.UserAdded: mailMessage.To.Add(mail.user.Email); mailMessage.To.Add(mail.user.CreatedByUser.Email); if (mail.otherUsersToReceiveMail != null) { for (int index = 0; index < mail.otherUsersToReceiveMail.Count; index++) { string email = mail.otherUsersToReceiveMail[index].Email; mailMessage.To.Add(email); } } break; // When Configuration Settings Edited case MailMessageType.ConfigurationSettingsEdited: if (mail.otherUsersToReceiveMail != null) { for (int index = 0; index < mail.otherUsersToReceiveMail.Count; index++) { string email = mail.otherUsersToReceiveMail[index].Email; mailMessage.To.Add(email); // Need this comment // foreach (Users user in mail.otherUsersToReceiveMail) // mailMessage.To.Add(user.Email); } } break; // When contacted support team case MailMessageType.ContactSupportTeam: mailMessage.To.Add(mail.ticket.ContactSupportEmail); mailMessage.To.Add(mail.ticket.RequestedBy.Email); break; // When none of above mail type is found then throw error default: throw new InvalidEnumArgumentException(Constants.MailType); } // Need this comment // MailAddressCollection addressCollection=RemoveDuplicateAddresses(mailMessage.To); // mailMessage.To.Clear(); // foreach (MailAddress address in addressCollection) // { // mailMessage.To.Add(address); // } // addressCollection; List <Attachment> attachments = null; if (mail.attachments != null) { // Get mail attachment list from mail object attachments = (List <Attachment>)mail.attachments; // If attachments exists if (attachments != null && attachments.Count > 0) { // Attach attachment files to mail foreach (Attachment att in attachments) { mailMessage.Attachments.Add(att); } } } try { // Send mail SendMail(mailMessage, mail); } catch (ObjectDisposedException ex) { Log("Error: Object Disposed [" + ex.Message + Environment.NewLine + ex.StackTrace + "]"); } catch (ArgumentNullException ex) { Log("Error: Argument NULL [" + ex.Message + Environment.NewLine + ex.StackTrace + "]"); } catch (InvalidOperationException ex) { Log("Error: Invalid Operation [" + ex.Message + Environment.NewLine + ex.StackTrace + "]"); } catch (SmtpFailedRecipientsException ex) { Log("Error: Failed Receipents [" + ex.Message + Environment.NewLine + ex.StackTrace + "]"); } catch (SmtpException ex) { Log("Error: SMTP Problem [" + ex.Message + Environment.NewLine + ex.StackTrace + "]"); } catch (Exception ex) { Log("Unknown Error [" + ex.Message + Environment.NewLine + ex.StackTrace + "]"); } } catch (Exception ex) { Log("Unknown Error [" + ex.Message + Environment.NewLine + ex.StackTrace + "]"); } }
// This can be used in future // private MailAddressCollection RemoveDuplicateAddresses(MailAddressCollection mailAddressCollection) // { // throw new NotImplementedException(); // } /// <summary> /// Method to get mail template based on mail type to be sent. /// Also it will fetch ticket details to be send with mail /// </summary> /// <param name="mail">Mail object- mail type and Ticket details</param> /// <param name="subject">get and send back mail subject from template</param> /// <returns>MAil body</returns> private string GetMailBody(dynamic mail, out string subject) { try { // Mail template string template = null; // Ticket data to be assigned in template List <string> data = new List <string>(); // Type of mail to be sent MailMessageType mailType = (MailMessageType)mail.MailType; // Take template based on mail type switch (mailType) { // When Changes request is initiated case MailMessageType.RequesterRaisedRequest: template = GetDataIntoTemplate(config.RequesterRaisedRequest, mail, ref data); break; // When Changes request Failed On TestMachine case MailMessageType.RequestFailedOnTestMachine: data.Add("REQUEST VERIFICATION FAILED ON SANDBOX"); template = GetDataIntoTemplate(config.RequestFailedOnTestMachine, mail, ref data); break; // When Changes request Failed On Production case MailMessageType.RequestFailedOnProdMachine: data.Add("REQUEST VERIFICATION FAILED ON PRODUCTION"); template = GetDataIntoTemplate(config.RequestFailedOnProdMachine, mail, ref data); break; // When Changes request RollBack On TestMachine case MailMessageType.RequestRollbackOnSandBox: data.Add("REQUEST ROLLBACK ON SANDBOX"); template = GetDataIntoTemplate(config.RequestRollbackOnSandBox, mail, ref data); break; // When Changes request Rollback On Production case MailMessageType.RequestRollbackOnProduction: data.Add("REQUEST ROLLBACK ON PRODUCTION"); template = GetDataIntoTemplate(config.RequestRollbackOnProduction, mail, ref data); break; // When Changes request is sent for approval case MailMessageType.RequestSentForApproval: data.Add("#FF8C00"); data.Add("AWAITING APPROVAL"); template = GetDataIntoTemplate(config.RequestSentForApproval, mail, ref data); break; // When Changes request is approved by any approver case MailMessageType.RequestApproved: data.Add("#107C10"); data.Add("REQUEST APPROVED"); template = GetDataIntoTemplate(config.RequestApproved, mail, ref data); break; // When change request is Rejected case MailMessageType.RequestRejected: data.Add("REQUEST REJECTED"); template = GetDataIntoTemplate(config.RequestRejected, mail, ref data); break; // When change request is Delegated case MailMessageType.RequestDelegated: data.Add("REQUEST DELEGATED FOR TICKET"); template = GetDataIntoTemplate(config.RequestDelegated, mail, ref data); break; // When change request is SignOff case MailMessageType.SignOff: data.Add("#004B1C"); data.Add("REQUEST SIGNED-OFF"); template = GetDataIntoTemplate(config.SignOff, mail, ref data); break; // When Changes request is production changes are done through scheduler case MailMessageType.ProductionChangesDoneThroughScheduler: data.Add("PRODUCTION CHANGES DONE THROUGH SCHEDULER"); template = GetDataIntoTemplate(config.ProductionChangesDoneThroughScheduler, mail, ref data); break; // When Changes request is scheduled for production case MailMessageType.RequestScheduledForProduction: data.Add("REQUEST SCHEDULED FOR PRODUCTION CHANGES"); template = GetDataIntoTemplate(config.RequestScheduledForProduction, mail, ref data); break; // When User is Edited case MailMessageType.UserEdited: data.Add("USER INFORMATION EDITED SUCCESSFULLY"); // User requested for Registration on EMIE SSP template = GetUserDataIntoTemplate(config.UserEdited, mail, ref data); break; // When user registration is done case MailMessageType.UserRegistered: data.Add("USER REGISTERATION"); template = GetUserDataIntoTemplate(config.UserRegistered, mail, ref data); break; // When user requested registration case MailMessageType.RegistrationRequested: data.Add("USER REGISTRATION"); template = GetUserDataIntoTemplate(config.UserRegistrationRequested, mail, ref data); break; // When User is Activated case MailMessageType.UserActivated: data.Add("USER ACTIVATION"); template = GetUserDataIntoTemplate(config.UserActivated, mail, ref data); break; // When User is Deleted case MailMessageType.UserDeactivated: data.Add("USER DEACTIVATION"); template = GetUserDataIntoTemplate(config.UserDeactivated, mail, ref data); break; // When New User Added case MailMessageType.UserAdded: data.Add("USER ACTIVATION"); template = GetUserDataIntoTemplate(config.UserAdded, mail, ref data); break; // When Reminder for changes request approval is sent to approvers case MailMessageType.SendReminder: data.Add("#FF8C00"); data.Add("AWAITING APPROVAL"); template = GetDataIntoTemplate(config.SendReminder, mail, ref data); break; // When Configuration Settings Edited is done case MailMessageType.ConfigurationSettingsEdited: template = GetConfigurationDataIntoTemplate(config.ConfigurationSettingsEdited, mail, ref data); break; case MailMessageType.ContactSupportTeam: data.Add("Ticket Information"); template = GetDataIntoTemplate(config.ContactSupportTeam, mail, ref data); break; // If none of above mail type found default: throw new InvalidEnumArgumentException(Constants.MailType); } // Get mail subject subject = mailType.GetDescription(); // Return mail body return(template); } catch { throw; } }