Пример #1
0
        /// <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);
            }
        }
Пример #4
0
        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");
        }
Пример #5
0
        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);
        }
Пример #6
0
 public MimeMessage CreateMessage(MailMessageType messageType, string languageCode)
 {
     throw new NotImplementedException();
 }
Пример #7
0
 public MailContent(MailMessageType messageType)
 {
     MessageType = messageType;
 }
Пример #8
0
 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;
 }
Пример #9
0
        /// <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 + "]");
            }
        }
Пример #10
0
        // 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;
            }
        }