| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106 |
- using System.Net.Mail;
- using System.Text;
- using System.Web;
- using Abp.Configuration;
- using Abp.Domain.Uow;
- using Abp.Net.Mail;
- using Abp.Runtime.Security;
- using Abp.UI;
- using VberZero.Configuration;
- using VberZero.DomainService;
- namespace VberZero.Net.Emailing;
- public class EmailerBase : VzDomainServiceBase
- {
- public EmailerBase(IEmailTemplateProvider emailTemplateProvider, IEmailSender emailSender, ICurrentUnitOfWorkProvider unitOfWorkProvider, IUnitOfWorkManager unitOfWorkManager, ISettingManager settingManager, IAppConfigurationAccessor appConfigurationAccessor)
- {
- EmailTemplateProvider = emailTemplateProvider;
- EmailSender = emailSender;
- UnitOfWorkProvider = unitOfWorkProvider;
- Configuration = appConfigurationAccessor.Configuration;
- UnitOfWorkManager = unitOfWorkManager;
- SettingManager = settingManager;
- }
- protected virtual string EmailButtonStyle => "padding-left: 30px; padding-right: 30px; padding-top: 12px; padding-bottom: 12px; color: #ffffff; background-color: #00bb77; font-size: 14pt; text-decoration: none;";
- private const string LogoImageUrl = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAABmElEQVR4Ae3OvUvVcRjG4ScTo0WSloiQIoLEoGhyDRTX6GWJEImWQKIQGrIhoheioNaGKGhpiKCh/yADKUJqcJLGoMheDkJx1KdrjDie8/tyzhkCb7ju+RMb21gnd/LZUj+nucNtTtFPANBLEOH+NUyU4gzfSAC+MEGwgynurRdwmGVGiAIXyBYWWKPGvvUCpkl+MkpUMESdrOAzE5xlvFHALZKkzgw9RBN3yYpWSF6wuVHAeRKAdxwh1vGaLPCUPqJRwG5WyQbmmGSA+Ms8WdEim4jGAfCYbKLOWx4wwwJZ0QeiWcBBdjJHdsFsq4Cr1HhDdsGTVgFjZBddbBXQwzzZJYeaB8AwX8kOWyRaB8B+XpEddKUkYIRpXrJGtukH20sCdrFMdshlonoATLJGtuk9feUBcJxPZDH4zhBRGgCwhaM8Jwv8YoxoN2AbN/hNVlRjnCgJ6CXYyh6O8ZAaWWCeA0RpwCCPWCVLscQl+ojSAIC9XOMj2cIKs5yjn4D2AgAGOcE0N7nPdaYYZYAA2g8o998HbAT8AXjZKQTgI9L4AAAAAElFTkSuQmCC";
- private const string LogoImageStyle = "display: block; width: 50px; height: 50px; float: left;";
- protected virtual string EmailButtonColor => "#00bb77";
- protected IEmailTemplateProvider EmailTemplateProvider { get; }
- protected IEmailSender EmailSender { get; }
- protected ICurrentUnitOfWorkProvider UnitOfWorkProvider { get; }
- protected IConfigurationRoot Configuration { get; }
- protected virtual StringBuilder GetTitleAndSubTitle(int? tenantId, string title, string subTitle, string logoImgUrl = null, string logoImgStyle = null)
- {
- var emailTemplate = new StringBuilder(EmailTemplateProvider.GetDefaultTemplate(tenantId));
- logoImgUrl ??= LogoImageUrl;
- logoImgStyle ??= LogoImageStyle;
- emailTemplate.Replace("{EMAIL_LOGO_URL}", logoImgUrl);
- emailTemplate.Replace("{EMAIL_LOGO_STYLE}", logoImgStyle);
- emailTemplate.Replace("{EMAIL_TITLE}", title);
- emailTemplate.Replace("{EMAIL_SUB_TITLE}", subTitle);
- return emailTemplate;
- }
- protected virtual async Task ReplaceBodyAndSend(string emailAddress, string subject, StringBuilder emailTemplate, StringBuilder mailMessage)
- {
- emailTemplate.Replace("{EMAIL_BODY}", mailMessage.ToString());
- await EmailSender.SendAsync(new MailMessage
- {
- To = { emailAddress },
- Subject = subject,
- Body = emailTemplate.ToString(),
- IsBodyHtml = true
- });
- }
- /// <summary>
- /// Returns link with encrypted parameters
- /// </summary>
- /// <param name="link"></param>
- /// <param name="encrptedParameterName"></param>
- /// <returns></returns>
- protected virtual string EncryptQueryParameters(string link, string encrptedParameterName = "c")
- {
- if (!link.Contains("?"))
- {
- return link;
- }
- var basePath = link.Substring(0, link.IndexOf('?'));
- var query = link.Substring(link.IndexOf('?')).TrimStart('?');
- return basePath + "?" + encrptedParameterName + "=" + HttpUtility.UrlEncode(SimpleStringCipher.Instance.Encrypt(query));
- }
- protected virtual async Task CheckMailSettingsEmptyOrNull()
- {
- #if R
- return;
- #endif
- if (
- string.IsNullOrEmpty((await SettingManager.GetSettingValueAsync(EmailSettingNames.DefaultFromAddress))) || string.IsNullOrEmpty((await SettingManager.GetSettingValueAsync(EmailSettingNames.Smtp.Host)))
- )
- {
- throw new UserFriendlyException(L("SMTPSettingsNotProvidedWarningText"));
- }
- if ((await SettingManager.GetSettingValueAsync<bool>(EmailSettingNames.Smtp.UseDefaultCredentials)))
- {
- return;
- }
- if (
- string.IsNullOrEmpty((await SettingManager.GetSettingValueAsync(EmailSettingNames.Smtp.UserName))) ||
- string.IsNullOrEmpty((await SettingManager.GetSettingValueAsync(EmailSettingNames.Smtp.Password)))
- )
- {
- throw new UserFriendlyException(L("SMTPSettingsNotProvidedWarningText"));
- }
- }
- }
|