示例#1
0
        public IActionResult sendEmail(ReceivedEmailDto dto)
        {
            var setupValue = _setupRepo.getQueryable().ToList();

            dto.receiver_email = setupValue.Where(a => a.key == Web.Models.SetupKeys.getEmailKey).SingleOrDefault()?.value;
            var email_password = setupValue.Where(a => a.key == Web.Models.SetupKeys.getEmailPasswordKey).SingleOrDefault()?.value;
            var email_host     = setupValue.Where(a => a.key == Web.Models.SetupKeys.getEmailHostKey).SingleOrDefault()?.value;
            var email_port     = setupValue.Where(a => a.key == Web.Models.SetupKeys.getEmailPortKey).SingleOrDefault()?.value;

            if (ModelState.IsValid)
            {
                try
                {
                    _emailSenderService.send(dto, email_password, email_host, email_port);
                    TempData["email-message"] = "Message sent";
                }
                catch (EmailSendFailureException ex)
                {
                    TempData["email-message"] = "Failed to send email";
                }
                catch (Exception ex)
                {
                    TempData["email-message"] = ex.Message;
                }
            }
            return(RedirectToAction("index"));
        }
        public void send(ReceivedEmailDto email_detail, string email_password, string email_host, string email_port)
        {
            try
            {
                using (TransactionScope tx = new TransactionScope(TransactionScopeOption.Required))
                {
                    try
                    {
                        sendEmail(email_detail, email_password, email_host, email_port);
                    }
                    catch (Exception ex)
                    {
                        throw new EmailSendFailureException(ex.Message);
                    }


                    ReceivedEmail receivedEmail = new ReceivedEmail();
                    _receivedEmailMaker.copy(ref receivedEmail, email_detail);

                    _receivedEmailRepo.insert(receivedEmail);
                    tx.Complete();
                }
            }
            catch (Exception)
            {
                throw;
            }
        }
        private void sendEmail(ReceivedEmailDto email_detail, string email_password, string email_host, string email_port)
        {
            if (!email_detail.isReceiverEmailValid())
            {
                throw new InvalidValueException("Receiver email is not valid.");
            }


            var mailMessage = new MailMessage(email_detail.sender_email,
                                              email_detail.receiver_email);


            mailMessage.Subject = email_detail.subject;
            mailMessage.Body    = email_detail.message;
            using (SmtpClient smtp = new SmtpClient())
            {
                smtp.Host = email_host;
                smtp.Port = Convert.ToInt32(email_port);
                smtp.UseDefaultCredentials = true;
                smtp.Credentials           = new NetworkCredential(email_detail.receiver_email, email_password);
                smtp.EnableSsl             = true;
                smtp.DeliveryMethod        = SmtpDeliveryMethod.Network;

                smtp.Send(mailMessage);
            }
        }
 public void copy(ref ReceivedEmail received_email, ReceivedEmailDto received_email_dto)
 {
     received_email.subject      = received_email_dto.subject.Trim();
     received_email.sender_email = received_email_dto.sender_email.Trim();
     received_email.first_name   = received_email_dto.first_name.Trim();
     received_email.last_name    = received_email_dto.last_name.Trim();
     received_email.message      = received_email_dto.message.Trim();
 }