static void ResourceFileTestInGerman() { var queue = new InMemoryMailQueue(); var senderx = new MailSenderService(queue); var generator = new MailGeneratorService(queue, mailSenderService: senderx, async: false); var loader = new ResourceFileTemplateRepository(new DefaultResourceManagerAdapter(Templates.ResourceManager)); loader.EnumerateTemplates(generator.Register); dynamic recipient = new ExpandoObject(); recipient.email = "*****@*****.**"; recipient.fullname = "Bob"; recipient.userid = "baxtor"; dynamic data = new ExpandoObject(); data.link = "http://www.google.com"; data.name = "Google"; generator.Send(recipient, "Welcome", data, language: CultureInfo.CreateSpecificCulture("de-AT")); }
static void Main(string[] args) { //var md = new TableMetadata(); //MetadataHelper.MetadataForClass(typeof(Dragon.Mail.SqlQueue.Mail), ref md); //var s = TSQLGenerator.BuildCreate(md); var queue = new InMemoryMailQueue(); var senderx = new MailSenderService(queue); var generator = new MailGeneratorService(queue, mailSenderService: senderx, async: false); var loader = new FileFolderTemplateRepository(@"..\..\templates"); loader.EnumerateTemplates(generator.Register); dynamic recipient = new ExpandoObject(); recipient.email = "*****@*****.**"; recipient.fullname = "Bob"; recipient.userid = "baxtor"; dynamic data = new ExpandoObject(); data.link = "http://www.google.com"; data.name = "Google"; generator.Send(recipient, "Welcome", data); //while (senderx.ProcessNext()) //{ //} }
public void MailMessage_is_correct_if_only_html_available() { // ARRANGE var queueMock = new Mock<IMailQueue>(); queueMock.Setup(m => m.Enqueue(It.IsAny<Models.Mail>(), It.IsAny<object>())); var configMock = new Mock<IConfiguration>(); var subject = new MailSenderService(queueMock.Object, configMock.Object); var renderedMail = new RenderedMail(); renderedMail.Sender = new MailAddress("*****@*****.**"); renderedMail.Receiver = new MailAddress("*****@*****.**"); renderedMail.Subject = "foo"; renderedMail.Body = "htmlbody"; renderedMail.TextBody = null; // ACT var mailMessage = subject.CreateMailMessage(renderedMail); // ASSERT var html = mailMessage.AlternateViews.FirstOrDefault(x => x.ContentType.MediaType == MediaTypeNames.Text.Html); Assert.AreEqual("htmlbody", new StreamReader(html.ContentStream).ReadToEnd()); var text = mailMessage.AlternateViews.FirstOrDefault(x => x.ContentType.MediaType == MediaTypeNames.Text.Plain); // html was transferred to plain text Assert.AreEqual("htmlbody", new StreamReader(text.ContentStream).ReadToEnd().Trim()); }
static void FolderTest() { var queue = new InMemoryMailQueue(); var senderx = new MailSenderService(queue); var generator = new MailGeneratorService(queue, mailSenderService: senderx, async: false); var loader = new FileFolderTemplateRepository(@"..\..\templates"); loader.EnumerateTemplates(generator.Register); dynamic recipient = new ExpandoObject(); recipient.email = "*****@*****.**"; recipient.fullname = "Bob"; recipient.userid = "baxtor"; dynamic data = new ExpandoObject(); data.link = "http://www.google.com"; data.name = "Google"; generator.Send(recipient, "Welcome", data); }
private void SendMailButton_Click(object sender, RoutedEventArgs e) { if (IsAllFieldsFilled()) { MailSenderService mailSenderService = new MailSenderService(UserNameEditor.Text, PasswordEditor.SecurePassword, MessageEditor.Text, SubjectEditor.Text); SentState sentState = mailSenderService.SendMail(); ShowState(sentState); } }
public async Task <IActionResult> AcceptRequest(int Id) { var model = _context.RegistrationRequests.FirstOrDefault(p => p.Id == Id); IdentityUser user = new IdentityUser() { UserName = model.Email, Email = model.Email, }; string role = ""; if (model.UserType == Utilities.UserType.TrainnerUser) { role = "User"; } else { role = "SimpleUser"; } var result = await _userManager.CreateAsync(user, model.Password); if (result.Succeeded) { await _userManager.AddToRoleAsync(user, role); } else { return(RedirectToAction("UserRequestIndex")); } model.Accept = true; _context.RegistrationRequests.Update(model); _context.SaveChanges(); MailModel mail = new MailModel(); mail.ToMail = new System.Collections.Generic.List <string>(); mail.ToMail.Add(model.Email); mail.Subject = "Account approval"; mail.Body = $"Dear {model.Name} {model.SurName}, This email is to notify you that your account has been approved, you're free to login now and enjoy all the features of the website"; MailSenderService.SendMail(mail); return(RedirectToAction("UserRequestIndex")); }
public async Task <IActionResult> SendMail([FromForm] string Mail, [FromForm(Name = "Attachment")] IFormFile Attachment) { Result <string> result = new Result <string>(); try { var mail = JsonConvert.DeserializeObject <Mail>(Mail); MailSenderService.SendMailWithAttach(mail.MailTo, mail.MailTitle, mail.MailContent, Attachment); result.Data = "sucess"; return(Ok(result)); } catch (Exception ex) { result.IsSuccess = false; result.ErrorMessage = ex.Message; return(BadRequest(result)); } }
public async void DeleteUserRequest(int id) { var model = _context.RegistrationRequests.FirstOrDefault(p => p.Id == id); IdentityUser user = await _userManager.FindByEmailAsync(model.Email); await _userManager.DeleteAsync(user); _context.RegistrationRequests.Remove(model); _context.SaveChanges(); MailModel mail = new MailModel(); mail.ToMail.Add(model.Email); mail.Subject = "User Deleted"; mail.Body = "Your account has been deleted"; MailSenderService.SendMail(mail); }
private void OnSendButtonClick(object Sender, RoutedEventArgs E) { var sender = SendersList.SelectedItem as Sender; if (sender is null) { return; } if (!(RecipientsList.SelectedItem is Recipient recipient)) { return; } if (!(ServersList.SelectedItem is Server server)) { return; } if (!(MessagesList.SelectedItem is Message message)) { return; } var send_service = new MailSenderService { ServerAddress = server.Address, ServerPort = server.Port, UseSSL = server.UseSSL, Login = server.Login, Password = server.Password, }; try { send_service.SendMessage(sender.Address, recipient.Address, message.Subject, message.Body); } catch (SmtpException error) { MessageBox.Show( "Ошибка при отправке почты" + error.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } }
/// <summary> /// Моментальная отправка письма /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SendMailButton_Click(object sender, RoutedEventArgs e) { if (IsAllFieldsFilled()) { TextRange textRange = new TextRange(MessageEditor.Document.ContentStart, MessageEditor.Document.ContentEnd); if (!string.IsNullOrEmpty(textRange.Text)) { MailSenderService mailSenderService = new MailSenderService((Sender)this.SenderBox.SelectedItem, textRange.Text, "Empty subject"); SentState sentState = mailSenderService.SendMails((IQueryable <Recipient>) this.RecipientsGrid.ItemsSource); ShowState(sentState); } else { ShowState(false, "не заполнено тело письма"); } } }
//private void BtnSend_Click(object sender, System.Windows.RoutedEventArgs e) //{ // //var sendSender = SenderList.SelectedItem as Sender; // //if (sendSender is null) // //{ // // return; // //} // if (!(SenderList.SelectedItem is Sender sendSender)) return; // if (!(RecipientList.SelectedItem is Recipient sendRecip)) return; // if (!(Serverlist.SelectedItem is Server sendServer)) return; // if (!(MessagesList.SelectedItem is Message msg)) return; // var sendService = new MailSenderService // { // ServerAdress = sendServer.Adress, // ServerPort = sendServer.Port, // UseSSL = sendServer.UseSSL, // Password = sendServer.Passord, // Login = sendServer.Login // }; // try // { // sendService.SendMail(sendSender.EmailAdress, sendRecip.EmailAdress, msg.Subject, msg.Body); // } // catch(SmtpException ex) // { // MessageBox.Show("Ошибка SMTP при отправке почты" + ex.Message,"Ошибка",MessageBoxButton.OK, MessageBoxImage.Error); // } // catch (System.Exception ex) // { // MessageBox.Show("Ошибка при отправке почты" + ex.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); // } //} private void OnSendButtonClick(object sender, RoutedEventArgs e) { if (!(SenderList.SelectedItem is Sender sendSender)) { return; } if (!(RecipientList.SelectedItem is Recipient sendRecip)) { return; } if (!(ServerList.SelectedItem is Server sendServer)) { return; } if (!(MessagesList.SelectedItem is Message msg)) { return; } var sendService = new MailSenderService { ServerAdress = sendServer.Adress, ServerPort = sendServer.Port, UseSSL = sendServer.UseSSL, Password = sendServer.Passord, Login = sendServer.Login }; try { sendService.SendMessage(sendSender.EmailAdress, sendRecip.EmailAdress, msg.Subject, msg.Body); } catch (SmtpException ex) { MessageBox.Show("Ошибка SMTP при отправке почты: " + ex.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } catch (System.Exception ex) { MessageBox.Show("Ошибка при отправке почты: " + ex.Message, "Ошибка", MessageBoxButton.OK, MessageBoxImage.Error); } }
/// <summary> /// Запланировать отправку письма /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void SendSheduledMail_Click(object sender, RoutedEventArgs e) { if (!this.SendMailDateTimePicker.Value.HasValue || this.SendMailDateTimePicker.Value.Value <= DateTime.Now) { ShowState(false, "воспользуйтесь отправкой сразу"); } else { TextRange textRange = new TextRange(MessageEditor.Document.ContentStart, MessageEditor.Document.ContentEnd); if (!string.IsNullOrEmpty(textRange.Text)) { MailSenderService mailSenderService = new MailSenderService((Sender)this.SenderBox.SelectedItem , textRange.Text, "Empty subject" , (IQueryable <Recipient>) this.RecipientsGrid.ItemsSource); Sheduler.AddTask(new Task(this.SendMailDateTimePicker.Value.Value , mailSenderService)); } } }
public async Task <IActionResult> DeleteRequest(int Id) { var model = _context.RegistrationRequests.FirstOrDefault(p => p.Id == Id); IdentityUser user = await _userManager.FindByEmailAsync(model.Email); await _userManager.DeleteAsync(user); _context.RegistrationRequests.Remove(model); _context.SaveChanges(); MailModel mail = new MailModel(); mail.ToMail = new System.Collections.Generic.List <string>(); mail.ToMail.Add(model.Email); mail.Subject = "Account Ban"; mail.Body = $"Dear {model.Name} {model.SurName}, This email is to notify you that your account has been deleted. If you want to know the specific reason of the denial feel free to give us a call with the number provided on our website"; MailSenderService.SendMail(mail); return(RedirectToAction("UserRequestIndex")); }
public async Task <bool> ForgotPassword(UserFilter userFilter) { //Quên mật khẩu //Nếu thí sinh nhập đúng Identify và Email, hệ thống sẽ generate lại mật khẩu và gửi về email User user = await UOW.UserRepository.Get(userFilter); if (user == null) { throw new BadRequestException("Id không tồn tại"); } if (!userFilter.Email.Equals(user.Email)) { throw new BadRequestException("Email không đúng!"); } user.Password = CryptographyExtentions.GeneratePassword(); user.Salt = null; await UOW.UserRepository.ChangePassword(user); MailSenderService mailSender = new MailSenderService(user); Thread sendMailThread = new Thread(new ThreadStart(mailSender.RecoveryPasswordMail)); sendMailThread.Start(); return(true); }
public void Smtp_All_Credentials_IsOverwritten_ButNoOther_WhenSet() { // ARRANGE var queueMock = new Mock<IMailQueue>(); queueMock.Setup(m => m.Enqueue(It.IsAny<Models.Mail>(), It.IsAny<object>())); var configMock = new Mock<IConfiguration>(); configMock.Setup(m => m.GetValue(MailSenderService.APP_KEY_OVERRIDE_SMTP_USER)) .Returns("a"); configMock.Setup(m => m.GetValue(MailSenderService.APP_KEY_OVERRIDE_SMTP_PASSWORD)) .Returns("c"); var smtpMock = new Mock<ISmtpClient>(); var subject = new MailSenderService(queueMock.Object, configMock.Object); var renderedMail = new RenderedMail(); renderedMail.Sender = new MailAddress("*****@*****.**"); renderedMail.Receiver = new MailAddress("*****@*****.**"); renderedMail.Subject = "foo"; renderedMail.Body = "htmlbody"; renderedMail.TextBody = "textbody"; // ACT var mailMessage = subject.ProcessInternal(renderedMail, smtpMock.Object); // ASSERT smtpMock.Verify(c => c.SetHost("example.org"), Times.Never); smtpMock.Verify(c => c.SetPort(1234), Times.Never); smtpMock.Verify(c => c.SetCredentials(null, "a", "c"), Times.Once); smtpMock.Verify(c => c.SetEnableSsl(It.IsAny<bool>()), Times.Never); }
private Boolean PackageEmailContent(short role, string content, Lesson lesson, string learnerEmail, string teacherEmail) { StringBuilder EmailContent = new StringBuilder(@" <td align='center' valign='top' id='templateHeader' style='background:#FFFFFF none no-repeat center/cover;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #FFFFFF;background-image: none;background-repeat: no-repeat;background-position: center;background-size: cover;border-top: 0;border-bottom: 0;padding-top: 9px;padding-bottom: 0;'> <!--[if (gte mso 9)|(IE)]> <table align='center' border='0' cellspacing='0' cellpadding='0' width='600' style='width:600px;'> <tr> <td align='center' valign='top' width='600' style='width:600px;'> <![endif]--> <table align='center' border='0' cellpadding='0' cellspacing='0' width='100%' class='templateContainer' style='border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;max-width: 600px !important;'> <tr> <td valign='top' class='headerContainer' style='mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'><table border='0' cellpadding='0' cellspacing='0' width='100%' class='mcnImageBlock' style='min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'> <tbody class='mcnImageBlockOuter'> <tr> <td valign='top' style='padding: 9px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;' class='mcnImageBlockInner'> <table align='left' width='100%' border='0' cellpadding='0' cellspacing='0' class='mcnImageContentContainer' style='min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'> <tbody><tr> <td class='mcnImageContent' valign='top' style='padding-right: 9px;padding-left: 9px;padding-top: 0;padding-bottom: 0;text-align: center;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'> <img align='center' alt='' src='https://mcusercontent.com/29ed8676ac274685bdb472ffb/images/7502ab7a-c966-47e1-b410-93f7a449afd0.png' width='564' style='max-width: 1200px;padding-bottom: 0px;vertical-align: bottom;display: inline !important;border: 1px none;border-radius: 0%;height: auto;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;' class='mcnImage'> </td> </tr> </tbody></table> </td> </tr> </tbody> </table><table border='0' cellpadding='0' cellspacing='0' width='100%' class='mcnCodeBlock' style='border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'> <tbody class='mcnTextBlockOuter'> <tr> <td valign='top' class='mcnTextBlockInner' style='mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'> <div style='background-color:#ddd;margin-left:20px;margin-right:20px'> <span> "); string part2 = @"</span> </span> </div> </td> </tr> </tbody> </table><table border='0' cellpadding='0' cellspacing='0' width='100%' class='mcnTextBlock' style='min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'> <tbody class='mcnTextBlockOuter'> <tr> <td valign='top' class='mcnTextBlockInner' style='padding-top: 9px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'> <!--[if mso]> <table align='left' border='0' cellspacing='0' cellpadding='0' width='100%' style='width:100%;'> <tr> <![endif]--> <!--[if mso]> <td valign='top' width='600' style='width:600px;'> <![endif]--> <table align='left' border='0' cellpadding='0' cellspacing='0' style='max-width: 100%;min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;' width='100%' class='mcnTextContentContainer'> <tbody><tr> <td valign='top' class='mcnTextContent' style='padding: 0px 18px 9px;color: #4CAAD8;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;word-break: break-word;font-family: Helvetica;font-size: 16px;line-height: 150%;text-align: left;'> <h1 style='display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 26px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;text-align: left;'><span style='font-size:16px'><span style='color:#0000CD'>This is an automated email - please do not reply directly to this email. Please click button to reply!</span></span></h1> </td> </tr> </tbody></table> <!--[if mso]> </td> <![endif]--> <!--[if mso]> </tr> </table> <![endif]--> </td> </tr> </tbody> </table><table border='0' cellpadding='0' cellspacing='0' width='100%' class='mcnButtonBlock' style='min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'> <tbody class='mcnButtonBlockOuter'> <tr> <td style='padding-top: 0;padding-right: 18px;padding-bottom: 18px;padding-left: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;' valign='top' align='center' class='mcnButtonBlockInner'> <table border='0' cellpadding='0' cellspacing='0' width='100%' class='mcnButtonContentContainer' style='border-collapse: separate !important;border: 1px none;border-radius: 9px;background-color: #2BAADF;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'> <tbody> <tr> <td align='center' valign='middle' class='mcnButtonContent' style='font-family: Arial;font-size: 16px;padding: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'>"; string part4 = @" </td> </tr> </tbody> </table> </td> </tr> </tbody> </table></td> </tr> </table> <!--[if (gte mso 9)|(IE)]> </td> </tr> </table> <![endif]--> </td> </tr> <tr> <td align='center' valign='top' id='templateBody' style='background:#FFFFFF none no-repeat center/cover;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #FFFFFF;background-image: none;background-repeat: no-repeat;background-position: center;background-size: cover;border-top: 0;border-bottom: 0;padding-top: 9px;padding-bottom: 9px;'> <!--[if (gte mso 9)|(IE)]> <table align='center' border='0' cellspacing='0' cellpadding='0' width='600' style='width:600px;'> <tr> <td align='center' valign='top' width='600' style='width:600px;'> <![endif]--> <table align='center' border='0' cellpadding='0' cellspacing='0' width='100%' class='templateContainer' style='border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;max-width: 600px !important;'> <tr> <td valign='top' class='bodyContainer' style='mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'></td> </tr> </table> <!--[if (gte mso 9)|(IE)]> </td> </tr> </table> <![endif]--> </td> </tr> <tr> <td align='center' valign='top' id='templateFooter' style='background:#FAFAFA none no-repeat center/cover;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;background-color: #FAFAFA;background-image: none;background-repeat: no-repeat;background-position: center;background-size: cover;border-top: 0;border-bottom: 0;padding-top: 9px;padding-bottom: 9px;'> <!--[if (gte mso 9)|(IE)]> <table align='center' border='0' cellspacing='0' cellpadding='0' width='600' style='width:600px;'> <tr> <td align='center' valign='top' width='600' style='width:600px;'> <![endif]--> <table align='center' border='0' cellpadding='0' cellspacing='0' width='100%' class='templateContainer' style='border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;max-width: 600px !important;'> <tr> <td valign='top' class='footerContainer' style='mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'><table border='0' cellpadding='0' cellspacing='0' width='100%' class='mcnDividerBlock' style='min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;table-layout: fixed !important;'> <tbody class='mcnDividerBlockOuter'> <tr> <td class='mcnDividerBlockInner' style='min-width: 100%;padding: 10px 18px 25px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'> <table class='mcnDividerContent' border='0' cellpadding='0' cellspacing='0' width='100%' style='min-width: 100%;border-top: 2px solid #EEEEEE;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'> <tbody><tr> <td style='mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'> <span></span> </td> </tr> </tbody></table> <!-- <td class='mcnDividerBlockInner' style='padding: 18px;'> <hr class='mcnDividerContent' style='border-bottom-color:none; border-left-color:none; border-right-color:none; border-bottom-width:0; border-left-width:0; border-right-width:0; margin-top:0; margin-right:0; margin-bottom:0; margin-left:0;' /> --> </td> </tr> </tbody> </table><table border='0' cellpadding='0' cellspacing='0' width='100%' class='mcnTextBlock' style='min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'> <tbody class='mcnTextBlockOuter'> <tr> <td valign='top' class='mcnTextBlockInner' style='padding-top: 9px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;'> <!--[if mso]> <table align='left' border='0' cellspacing='0' cellpadding='0' width='100%' style='width:100%;'> <tr> <![endif]--> <!--[if mso]> <td valign='top' width='600' style='width:600px;'> <![endif]--> <table align='left' border='0' cellpadding='0' cellspacing='0' style='max-width: 100%;min-width: 100%;border-collapse: collapse;mso-table-lspace: 0pt;mso-table-rspace: 0pt;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;' width='100%' class='mcnTextContentContainer'> <tbody><tr> <td valign='top' class='mcnTextContent' style='padding-top: 0;padding-right: 18px;padding-bottom: 9px;padding-left: 18px;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;word-break: break-word;color: #656565;font-family: Helvetica;font-size: 12px;line-height: 150%;text-align: center;'> <h2 style='text-align: left;display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 22px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;'><strong><span style='font-size:20px'><img data-file-id='1270491' height='88' src='https://mcusercontent.com/29ed8676ac274685bdb472ffb/images/ed52b6cd-88f5-41f6-9dec-fd071cf64a60.png' style='border: 0px;width: 91px;height: 88px;margin: 0px;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;' width='91'><br> ABLE MUSIC STUDIO</span><br> <br> <br> <font size='4'>Central AKL Branch</font></strong></h2> <div style='text-align: left;'><strong>Address:</strong> Level 2, 953 New North Rd, Mt Albert, Auckland<br> <strong>Ph</strong><strong>one:</strong> 09-846 9618<br> <strong>Fax:</strong> 09-846 9848<br> <strong>Email:</strong> <a href='mailto:[email protected]' style='mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #656565;font-weight: normal;text-decoration: underline;'>[email protected]</a></div> <h2 style='text-align: left;display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 22px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;'><strong><font size='4'>East AKL Branch</font></strong></h2> <div style='text-align: left;'><strong>Add</strong><strong>ress</strong><strong>:</strong> 2/ 550 Chapel Rd, Botany, Auckland<br> <strong>Ph</strong><strong>one</strong><strong>:</strong> 09-274 9618<br> <strong>Fax:</strong> 09-274 9648<br> <strong>Email:</strong> <a href='mailto:[email protected]' style='mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #656565;font-weight: normal;text-decoration: underline;'>[email protected]</a></div> <h2 style='text-align: left;display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 22px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;'><strong><font color='#2a2a2a' size='4'>Auckland City Branch</font></strong></h2> <div style='text-align: left;'><font size='2'><strong>Add</strong><strong>ress</strong><strong>:</strong> </font><font size='2'>Level 5, 109 Queens St, Auckland CBD</font><br> <strong>Ph</strong><strong>one</strong><strong>:</strong> 09-377 9618<br> <strong>Fax: </strong>09-377 9648<br> <strong>Email:</strong> <a href='mailto:[email protected]' style='mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #656565;font-weight: normal;text-decoration: underline;'>[email protected]</a></div> <h2 style='text-align: left;display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 22px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;'><strong><font size='4'>Henderson Branch</font></strong></h2> <div style='text-align: left;'><strong>Address:</strong> Level 2, 34 Te Pai Place, Henderson, Auckland<br> <strong>Ph</strong><strong>one:</strong> 09-835 9618<br> <strong>Fax:</strong> 09-835 9648<br> <strong>Email:</strong><font size='1'> </font><a href='http://[email protected]/' target='_blank' style='mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #656565;font-weight: normal;text-decoration: underline;'><font size='2'>[email protected]</font><font size='2'> </font></a></div> <h2 style='text-align: left;display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 22px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;'><strong><font size='4'><font size='4'>North Shore Branch</font></font></strong></h2> <div style='text-align: left;'><strong>Add</strong><strong>ress</strong><strong>: </strong><font size='2'>Level 2, 8C Link Drive, Sunnynook, Auckland</font><br> <strong>Ph</strong><strong>one</strong><strong>: </strong><font size='2'>09-444 6888</font><br> <strong>Fax: </strong><font size='2'>09-444 9648</font><br> <strong><font size='2'>Email</font><font size='2'>: </font></strong><a href='mailto:[email protected]' style='mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #656565;font-weight: normal;text-decoration: underline;'><font size='2'>[email protected]</font></a></div> <h2 style='text-align: left;display: block;margin: 0;padding: 0;color: #202020;font-family: Helvetica;font-size: 22px;font-style: normal;font-weight: bold;line-height: 125%;letter-spacing: normal;'><strong><font size='4'><font size='4'>Epsom Branch</font></font></strong></h2> <div style='text-align: left;'><strong>Add</strong><strong>ress</strong><strong>: </strong><font size='2'>Level 2, 123 Manukau Road, Epsom, Auckland</font><br> <strong>Ph</strong><strong>one</strong><strong>: </strong><font size='2'>09-522 9618 </font><br> <strong>Fax: </strong><font size='2'>09-522 9648</font><br> <strong><font size='2'>Email</font><font size='2'>: </font></strong><font size='2'><a href='mailto:[email protected]' style='mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #656565;font-weight: normal;text-decoration: underline;'>[email protected]</a></font><br> <br> <strong><font size='4'><font size='4'>Auckland Music Academy</font></font></strong><br> <strong>Add</strong><strong>ress</strong><strong>: </strong>19 William Roberts Rd, Pakuranga, Auckland<br> <strong>Ph</strong><strong>one</strong><strong>: </strong><font size='2'>09-577 3311</font><br> <strong><font size='2'>Email</font><font size='2'>:<u> info</u></font></strong><u><font size='2'><a href='mailto:[email protected]' style='mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;color: #656565;font-weight: normal;text-decoration: underline;'>@</a>nzama.co.nz</font></u><br> <br> <br> <em>Copyright © 2020 ABLE MUSIC STUDIO All rights reserved.</em></div>"; string title = "Message For Able Music Studio Lesson(" + lesson.BeginTime.Value.ToString("MM/dd/yyyy H:mm") + ")"; string userConfirmUrlPrefix = _configuration.GetSection("UrlPrefixMessage").Value; string photoUrlPrefix = _configuration.GetSection("UrlPrefixPhoto").Value; string confirmURLTeacher = userConfirmUrlPrefix + "Messgeboard/1/" + lesson.LessonId + "/" + lesson.TeacherId; string confirmURLStudent = userConfirmUrlPrefix + "Messgeboard/4/" + lesson.LessonId + "/" + lesson.LearnerId; //role 1:teacher 3:Receptionist,manager,principal 4:learner try { if (role == 4) //Teacher Send to student { var teacher = _ablemusicContext.Teacher.FirstOrDefault(t => t.TeacherId == lesson.TeacherId); string teacherImg; if (teacher != null && teacher.Photo != null) { teacherImg = photoUrlPrefix + teacher.Photo; } else { teacherImg = "https://d3fa68hw0m2vcc.cloudfront.net/931/213379411.jpeg"; } var teacherContent = "<img src='" + teacherImg + "' alt='icon' style='max-width: 60px;border-radius: 60%;margin-left: 10px;border: 0;height: auto;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;'> " + "<span style='margin-left:20px;margin-right:20px;font:12px/1 'Merriweather', arial, sans-serif'><div style='color:blue'>" + teacher.FirstName + " " + teacher.LastName + "</div>" + content; EmailContent.Append(teacherContent); EmailContent.Append(part2); var urlTeacher = "<a class='mcnButton ' title='Reply' href='" + confirmURLTeacher + "' target='_blank' style='font-weight: bold;letter-spacing: normal;line-height: 100%;text-align: center;text-decoration: none;color: #FFFFFF;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;display: block;'>Reply</a>"; EmailContent.Append(urlTeacher); EmailContent.Append(part4); return(MailSenderService.SendMail(teacherEmail, title, EmailContent.ToString())); } else if (role == 1) //Student Send to Teacher { var learner = _ablemusicContext.Learner.FirstOrDefault(t => t.LearnerId == lesson.LearnerId); var studentContent = "<img src='http://www.ablemusic.co.nz/uploads/4/4/4/0/44407777/2908727_orig.jpg' alt='icon' style='max-width: 60px;border-radius: 60%;margin-left: 10px;border: 0;height: auto;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;'> " + "<span style='margin-left:20px;margin-right:20px;font:12px/1 'Merriweather', arial, sans-serif'><div style='color:blue'>" + learner.FirstName + " " + learner.LastName + "</div>" + content; EmailContent.Append(studentContent); EmailContent.Append(part2); var urlStudent = "<a class='mcnButton ' title='Reply' href='" + confirmURLStudent + "' target='_blank' style='font-weight: bold;letter-spacing: normal;line-height: 100%;text-align: center;text-decoration: none;color: #FFFFFF;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;display: block;'>Reply</a>"; EmailContent.Append(urlStudent); EmailContent.Append(part4); return(MailSenderService.SendMail(learnerEmail, title, EmailContent.ToString())); } else { var allContent = "<img src='" + "http://www.gradspace.org:8888/assets/images/Avatar/able.png" + "' alt='icon' style='max-width: 60px;border-radius: 60%;margin-left: 10px;border: 0;height: auto;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;'> " + "<span style='margin-left:20px;margin-right:20px;font:12px/1 'Merriweather', arial, sans-serif'><div style='color:blue'>" + "ABLE MUSIC STUDIO RECEIPTIONIST" + "</div>" + content; EmailContent.Append(allContent); EmailContent.Append(part2); var urlTeacher = "<a class='mcnButton ' title='Reply' href='" + confirmURLTeacher + "' target='_blank' style='font-weight: bold;letter-spacing: normal;line-height: 100%;text-align: center;text-decoration: none;color: #FFFFFF;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;display: block;'>Reply</a>"; var urlLearner = "<a class='mcnButton ' title='Reply' href='" + confirmURLStudent + "' target='_blank' style='font-weight: bold;letter-spacing: normal;line-height: 100%;text-align: center;text-decoration: none;color: #FFFFFF;mso-line-height-rule: exactly;-ms-text-size-adjust: 100%;-webkit-text-size-adjust: 100%;display: block;'>Reply</a>"; // EmailContent.Append(urlTeacher); // EmailContent.Append(part4); var teacherContent = EmailContent + urlTeacher + part4; var learnerContent = EmailContent + urlLearner + part4; if (MailSenderService.SendMail(learnerEmail, title, learnerContent) == false) { return(false); } return(MailSenderService.SendMail(teacherEmail, title, teacherContent)); } } catch (Exception e) { throw e; } }
private void SendNotification(object sender, NotificationEventArgs e) { Task mailTask = MailSenderService.SendMailAsync(e.mailTo, e.mailTitle, e.mailContent, e.remindLogId); }
private void BtnSendEmail_Click(object sender, RoutedEventArgs e) { var SendService = new MailSenderService(); // Givers List <string> listStrMails = new List <string>(); listStrMails.Add(tbxSender.Text); // Sender string strSender = tbxSender.Text; var password = passwordBox.SecurePassword; // Email string title = txtBxEmailTitle.Text; // Email title / Тема //string body = txtBxEmailBody.Text; // Email body / Текст string body; #region RichTextBox // Create Stream for text using (var stream = new MemoryStream(100)) { // Get text from RichTextBox TextRange range = new TextRange(rchTxtBxEmailBody.Document.ContentStart, rchTxtBxEmailBody.Document.ContentEnd); // Save text to stream range.Save(stream, DataFormats.Text); // Set seek to begin stream.Seek(0, SeekOrigin.Begin); // Create Reader from stream var reader = new StreamReader(stream); // Convert stream to string body = reader.ReadToEnd(); } body = body.Trim(); if (body == string.Empty) { var eW = new ErrorWindow("Письмо не заполнено, переход в редактор писем."); eW.ShowDialog(); MainTabControl.SelectedIndex = 2; return; } #endregion // every time null if (lcSmtpServer.SelectedItem == null) { var eW = new ErrorWindow("Smtp-server не указан."); eW.ShowDialog(); MainTabControl.SelectedIndex = 0; return; } if (!(lcSmtpServer.SelectedItem is Server smtp)) { var eW = new ErrorWindow("Ошибка в данных, передан не smtp-server."); eW.ShowDialog(); MainTabControl.SelectedIndex = 0; return; } string FullAddress = smtp.FullAddress; var arr = FullAddress.Split(':'); StringBuilder strB = new StringBuilder(); foreach (var str in arr) { strB.Append(str); } string smtpUrl = strB.ToString(0, strB.Length - arr.Last().Length); int smtpPort; if (!(int.TryParse(arr.Last(), out smtpPort))) { var eW = new ErrorWindow(string.Format( "Порт smpt сервера {0} указан неверно.", smtpUrl)); return; } // Времменно отключена отправка для тестирования //return; try { var results = SendService.SmtpSendMessages(strSender, password, smtpUrl, smtpPort, title, body, listStrMails); for (int i = 0; i < results.Count; i++) { if (!results[i]) { var eW = new ErrorWindow(string.Format( "Ошибка письмо до {0} не отправлено.", listStrMails[i])); eW.ShowDialog(); } } SendEndWindow sew = new SendEndWindow(); sew.ShowDialog(); } catch (ArgumentException ae) { string errMsg = string.Empty; if (ae.ParamName == "from") { errMsg = "Email адрес отправителя не указан."; } else { throw; } var eW = new ErrorWindow(errMsg); eW.ShowDialog(); } catch (FormatException fe) { var eW = new ErrorWindow(fe.Message); eW.ShowDialog(); } }
public IActionResult ContactUs(MailModel model) { model.Subject = "Contact Us"; MailSenderService.SendMail(model); return(RedirectToAction("ContactUs")); }
public void Recipient_is_overridden_if_set() { // ARRANGE var queueMock = new Mock<IMailQueue>(); queueMock.Setup(m => m.Enqueue(It.IsAny<Models.Mail>(), It.IsAny<object>())); var configMock = new Mock<IConfiguration>(); configMock.Setup(m => m.GetValue(MailSenderService.APP_KEY_OVERRIDE_RECIPIENT)) .Returns("*****@*****.**"); var smtpMock = new Mock<ISmtpClient>(); var subject = new MailSenderService(queueMock.Object, configMock.Object); var renderedMail = new RenderedMail(); renderedMail.Sender = new MailAddress("*****@*****.**"); renderedMail.Receiver = new MailAddress("*****@*****.**"); renderedMail.Subject = "foo"; renderedMail.Body = "htmlbody"; renderedMail.TextBody = "textbody"; // ACT var mailMessage = subject.ProcessInternal(renderedMail, smtpMock.Object); // ASSERT smtpMock.Verify(c => c.Send( It.Is<MailMessage>(m => m.To.Count == 1 && m.To.First().Address == "*****@*****.**")), Times.Once); }
public async Task <IActionResult> PutInvoiceWaitingConfirm([FromBody] InvoiceWaitingConfirmViewModel invoiceWaitingConfirmViewModel) { var result = new Result <string>(); InvoiceWaitingConfirm invoiceWaitingConfirm = new InvoiceWaitingConfirm(); InvoiceWaitingConfirm invoiceWaitingConfirmUpdate = new InvoiceWaitingConfirm(); List <Invoice> activeInvoices = new List <Invoice>(); Invoice existInvoice = new Invoice(); Learner learner = new Learner(); _mapper.Map(invoiceWaitingConfirmViewModel, invoiceWaitingConfirm); try { invoiceWaitingConfirmUpdate = await _ablemusicContext.InvoiceWaitingConfirm. Where(i => (i.InvoiceNum == invoiceWaitingConfirm.InvoiceNum && i.IsActivate == 1)).FirstOrDefaultAsync(); activeInvoices = await _ablemusicContext.Invoice.Where(i => (i.IsActive == 1 || i.IsActive == null) && i.InvoiceNum == invoiceWaitingConfirm.InvoiceNum).ToListAsync(); } catch (Exception ex) { result.IsSuccess = false; result.IsFound = false; result.ErrorMessage = ex.Message; return(NotFound(result)); } if (invoiceWaitingConfirmUpdate == null) { result.IsSuccess = false; result.IsFound = false; result.ErrorMessage = "invoice waiting id not found"; return(NotFound(result)); } if (invoiceWaitingConfirmUpdate.IsActivate == 0) { result.IsSuccess = false; result.ErrorMessage = "The provided invoice id is not active"; return(BadRequest(result)); } if (activeInvoices.Count > 0 && activeInvoices.FirstOrDefault().PaidFee > 0) { result.IsSuccess = false; result.ErrorMessage = "The provided invoice is already paid"; return(BadRequest(result)); } invoiceWaitingConfirmUpdate.IsActivate = 0; invoiceWaitingConfirm.IsConfirmed = 1; invoiceWaitingConfirm.WaitingId = 0; invoiceWaitingConfirm.IsPaid = 0; invoiceWaitingConfirm.IsActivate = 1; invoiceWaitingConfirm.IsEmailSent = 0; invoiceWaitingConfirm.CreatedAt = toNZTimezone(DateTime.UtcNow); //for patch invoiceWaitingConfirm.EndDate = invoiceWaitingConfirmUpdate.EndDate; invoiceWaitingConfirm.DueDate = invoiceWaitingConfirmUpdate.DueDate; // Invoice invoice = new Invoice { InvoiceNum = invoiceWaitingConfirm.InvoiceNum, LessonFee = invoiceWaitingConfirm.LessonFee, ConcertFee = invoiceWaitingConfirm.ConcertFee, NoteFee = invoiceWaitingConfirm.NoteFee, Other1Fee = invoiceWaitingConfirm.Other1Fee, Other2Fee = invoiceWaitingConfirm.Other2Fee, Other3Fee = invoiceWaitingConfirm.Other3Fee, LearnerId = invoiceWaitingConfirm.LearnerId, LearnerName = invoiceWaitingConfirm.LearnerName, BeginDate = invoiceWaitingConfirm.BeginDate, EndDate = invoiceWaitingConfirm.EndDate, TotalFee = invoiceWaitingConfirm.TotalFee, DueDate = invoiceWaitingConfirm.DueDate, PaidFee = invoiceWaitingConfirm.PaidFee, OwingFee = invoiceWaitingConfirm.OwingFee, CreatedAt = invoiceWaitingConfirm.CreatedAt, IsPaid = invoiceWaitingConfirm.IsPaid, TermId = invoiceWaitingConfirm.TermId, CourseInstanceId = invoiceWaitingConfirm.CourseInstanceId, GroupCourseInstanceId = invoiceWaitingConfirm.GroupCourseInstanceId, LessonQuantity = invoiceWaitingConfirm.LessonQuantity, CourseName = invoiceWaitingConfirm.CourseName, ConcertFeeName = invoiceWaitingConfirm.ConcertFeeName, LessonNoteFeeName = invoiceWaitingConfirm.LessonNoteFeeName, Other1FeeName = invoiceWaitingConfirm.Other1FeeName, Other2FeeName = invoiceWaitingConfirm.Other2FeeName, Other3FeeName = invoiceWaitingConfirm.Other3FeeName, Comment = invoiceWaitingConfirm.Comment, IsActive = 1 }; if (activeInvoices.Count > 0) { foreach (var activeInvoice in activeInvoices) { activeInvoice.IsActive = 0; } } try { await _ablemusicContext.SaveChangesAsync(); await _ablemusicContext.InvoiceWaitingConfirm.AddAsync(invoiceWaitingConfirm); await _ablemusicContext.Invoice.AddAsync(invoice); await _ablemusicContext.SaveChangesAsync(); learner = await _ablemusicContext.Learner.Where(l => l.LearnerId == invoice.LearnerId).FirstOrDefaultAsync(); if (learner == null) { result.IsSuccess = false; result.IsFound = false; result.ErrorMessage = "learner not found"; return(NotFound(result)); } } catch (Exception ex) { result.IsSuccess = false; result.ErrorMessage = ex.Message; return(BadRequest(result)); } var invoicePDFGeneratorService = new InvoicePDFGeneratorService(invoice, _log); invoicePDFGeneratorService.SavePDF(); //sending Email string mailTitle = "Invoice"; string mailContent = MailContentGenerator(invoiceWaitingConfirmUpdate); Task learnerMailSenderTask = MailSenderService.SendMailUpdateInvoiceWaitingTableAsync(learner.Email, mailTitle, mailContent, invoiceWaitingConfirmUpdate.WaitingId); return(Ok(result)); }