public async Task SendAccountConfirmationEmailAsync( ISiteSettings siteSettings, string toAddress, string subject, string confirmationUrl) { SmtpOptions smtpOptions = GetSmptOptions(siteSettings); string plainTextTemplate = templateService.GetPlainTextTemplate(MessagePurpose.ConfirmAccount, CultureInfo.CurrentUICulture.Name); string plainTextMessage = string.Format(plainTextTemplate, confirmationUrl); string htmlTemplate = templateService.GetHtmlTemplate(MessagePurpose.ConfirmAccount, CultureInfo.CurrentUICulture.Name); string htmlMessage = string.Format(htmlTemplate, confirmationUrl); EmailSender sender = new EmailSender(); await sender.SendEmailAsync( smtpOptions, toAddress, siteSettings.DefaultEmailFromAddress, subject, plainTextMessage, htmlMessage); }
public async Task SendAccountConfirmationEmailAsync( ISiteSettings siteSettings, string toAddress, string subject, string confirmationUrl) { SmtpOptions smtpOptions = GetSmptOptions(siteSettings); if(smtpOptions == null) { var logMessage = $"failed to send account confirmation email because smtp settings are not populated for site {siteSettings.SiteName}"; log.LogError(logMessage); return; } string plainTextTemplate = templateService.GetPlainTextTemplate(MessagePurpose.ConfirmAccount, CultureInfo.CurrentUICulture.Name); string plainTextMessage = string.Format(plainTextTemplate, confirmationUrl); string htmlTemplate = templateService.GetHtmlTemplate(MessagePurpose.ConfirmAccount, CultureInfo.CurrentUICulture.Name); string htmlMessage = string.Format(htmlTemplate, confirmationUrl); EmailSender sender = new EmailSender(); try { await sender.SendEmailAsync( smtpOptions, toAddress, siteSettings.DefaultEmailFromAddress, subject, plainTextMessage, htmlMessage).ConfigureAwait(false); } catch (Exception ex) { log.LogError("error sending account confirmation email", ex); } }
public async Task SendAccountConfirmationEmailAsync( ISiteContext siteSettings, string toAddress, string subject, string confirmationUrl) { SmtpOptions smtpOptions = GetSmptOptions(siteSettings); if (smtpOptions == null) { var logMessage = $"failed to send account confirmation email because smtp settings are not populated for site {siteSettings.SiteName}"; log.LogError(logMessage); return; } EmailSender sender = new EmailSender(); try { var plainTextMessage = await viewRenderer.RenderViewAsString<string>("EmailTemplates/ConfirmAccountTextEmail", confirmationUrl).ConfigureAwait(false); var htmlMessage = await viewRenderer.RenderViewAsString<string>("EmailTemplates/ConfirmAccountHtmlEmail", confirmationUrl).ConfigureAwait(false); await sender.SendEmailAsync( smtpOptions, toAddress, smtpOptions.DefaultEmailFromAddress, subject, plainTextMessage, htmlMessage).ConfigureAwait(false); } catch (Exception ex) { log.LogError("error sending account confirmation email", ex); } }
public async Task SendSecurityCodeEmailAsync( ISiteSettings siteSettings, string toAddress, string subject, string securityCode) { SmtpOptions smtpOptions = GetSmptOptions(siteSettings); string plainTextTemplate = templateService.GetPlainTextTemplate(MessagePurpose.SendSecurityCode, ""); string plainTextMessage = string.Format(plainTextTemplate, securityCode); string htmlTemplate = templateService.GetHtmlTemplate(MessagePurpose.SendSecurityCode, ""); string htmlMessage = string.Format(htmlTemplate, securityCode); EmailSender sender = new EmailSender(); await sender.SendEmailAsync( smtpOptions, toAddress, siteSettings.DefaultEmailFromAddress, subject, plainTextMessage, htmlMessage); }
public async Task SendPasswordResetEmailAsync( ISiteSettings siteSettings, string toAddress, string subject, string resetUrl) { SmtpOptions smtpOptions = GetSmptOptions(siteSettings); if (smtpOptions == null) { var logMessage = $"failed to send password reset email because smtp settings are not populated for site {siteSettings.SiteName}"; log.LogError(logMessage); return; } string plainTextTemplate = templateService.GetPlainTextTemplate(MessagePurpose.PasswordReset, CultureInfo.CurrentUICulture.Name); string plainTextMessage = string.Format( CultureInfo.InvariantCulture, plainTextTemplate, siteSettings.SiteName, //maybe this should be the site url? resetUrl); string htmlTemplate = templateService.GetHtmlTemplate(MessagePurpose.PasswordReset, CultureInfo.CurrentUICulture.Name); string htmlMessage = string.Format( CultureInfo.InvariantCulture, htmlTemplate, siteSettings.SiteName, resetUrl); EmailSender sender = new EmailSender(); // in account controller we are calling this method without await // so it doesn't block the UI. Which means it is running on a background thread // similar as the old ThreadPool.QueueWorkItem // as such we need to handle any error that may happen so it doesn't // brind down the thread or the process try { await sender.SendEmailAsync( smtpOptions, toAddress, siteSettings.DefaultEmailFromAddress, subject, plainTextMessage, htmlMessage).ConfigureAwait(false); } catch(Exception ex) { log.LogError("error sending password reset email", ex); } }
public async Task AccountPendingApprovalAdminNotification( ISiteSettings siteSettings, ISiteUser user) { if(siteSettings.AccountApprovalEmailCsv.Length == 0) { return; } SmtpOptions smtpOptions = GetSmptOptions(siteSettings); if (smtpOptions == null) { var logMessage = $"failed to send new account notifications to admins because smtp settings are not populated for site {siteSettings.SiteName}"; log.LogError(logMessage); return; } string subject = "New Account Pending Approval"; string plainTextTemplate = templateService.GetPlainTextTemplate(MessagePurpose.ConfirmAccount, CultureInfo.CurrentUICulture.Name); //string plainTextMessage = string.Format(plainTextTemplate, confirmationUrl); //string plainTextMessage = "U" var message = $"A new user just registered at {siteSettings.SiteName} with email address {user.Email}"; //string htmlTemplate = templateService.GetHtmlTemplate(MessagePurpose.ConfirmAccount, CultureInfo.CurrentUICulture.Name); //string htmlMessage = string.Format(htmlTemplate, confirmationUrl); EmailSender sender = new EmailSender(); try { await sender.SendMultipleEmailAsync( smtpOptions, siteSettings.AccountApprovalEmailCsv, siteSettings.DefaultEmailFromAddress, subject, message, string.Empty).ConfigureAwait(false); } catch (Exception ex) { log.LogError("error sending email verification email", ex); } }
public async Task SendPasswordResetEmailAsync( ISiteContext siteSettings, string toAddress, string subject, string resetUrl) { SmtpOptions smtpOptions = GetSmptOptions(siteSettings); if (smtpOptions == null) { var logMessage = $"failed to send password reset email because smtp settings are not populated for site {siteSettings.SiteName}"; log.LogError(logMessage); return; } EmailSender sender = new EmailSender(); // in account controller we are calling this method without await // so it doesn't block the UI. Which means it is running on a background thread // similar as the old ThreadPool.QueueWorkItem // as such we need to handle any error that may happen so it doesn't // brind down the thread or the process try { var plainTextMessage = await viewRenderer.RenderViewAsString<string>("EmailTemplates/PasswordResetTextEmail", resetUrl); var htmlMessage = await viewRenderer.RenderViewAsString<string>("EmailTemplates/PasswordResetHtmlEmail", resetUrl); await sender.SendEmailAsync( smtpOptions, toAddress, smtpOptions.DefaultEmailFromAddress, subject, plainTextMessage, htmlMessage).ConfigureAwait(false); } catch (Exception ex) { log.LogError("error sending password reset email", ex); } }
public async Task AccountPendingApprovalAdminNotification( ISiteContext siteSettings, ISiteUser user) { if (siteSettings.AccountApprovalEmailCsv.Length == 0) { return; } SmtpOptions smtpOptions = GetSmptOptions(siteSettings); if (smtpOptions == null) { var logMessage = $"failed to send new account notifications to admins because smtp settings are not populated for site {siteSettings.SiteName}"; log.LogError(logMessage); return; } string subject = sr["New Account Pending Approval"]; EmailSender sender = new EmailSender(); try { var plainTextMessage = await viewRenderer.RenderViewAsString<ISiteUser>("EmailTemplates/AccountPendingApprovalAdminNotificationTextEmail", user).ConfigureAwait(false); var htmlMessage = await viewRenderer.RenderViewAsString<ISiteUser>("EmailTemplates/AccountPendingApprovalAdminNotificationHtmlEmail", user).ConfigureAwait(false); await sender.SendMultipleEmailAsync( smtpOptions, siteSettings.AccountApprovalEmailCsv, smtpOptions.DefaultEmailFromAddress, subject, plainTextMessage, htmlMessage).ConfigureAwait(false); } catch (Exception ex) { log.LogError("error sending email verification email", ex); } }