EmailTemplateProvider.cs 1.9 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using System.Collections.Concurrent;
  2. using System.Text;
  3. using Abp.Dependency;
  4. using Abp.Extensions;
  5. using Abp.IO.Extensions;
  6. using Abp.Reflection.Extensions;
  7. using VberZero.DomainService.Url;
  8. using VberZero.MultiTenancy;
  9. namespace VberZero.Net.Emailing;
  10. public class EmailTemplateProvider : IEmailTemplateProvider, ISingletonDependency
  11. {
  12. private readonly IWebUrlService _webUrlService;
  13. private readonly ITenantCache _tenantCache;
  14. private readonly ConcurrentDictionary<string, string> _defaultTemplates;
  15. public EmailTemplateProvider(IWebUrlService webUrlService, ITenantCache tenantCache)
  16. {
  17. _webUrlService = webUrlService;
  18. _tenantCache = tenantCache;
  19. _defaultTemplates = new ConcurrentDictionary<string, string>();
  20. }
  21. public string GetDefaultTemplate(int? tenantId)
  22. {
  23. var tenancyKey = tenantId.HasValue ? tenantId.Value.ToString() : "host";
  24. return _defaultTemplates.GetOrAdd(tenancyKey, _ =>
  25. {
  26. using var stream = typeof(EmailTemplateProvider).GetAssembly().GetManifestResourceStream("VzZeroCore.Net.Emailing.EmailTemplates.default.html");
  27. var bytes = stream.GetAllBytes();
  28. var template = Encoding.UTF8.GetString(bytes, 3, bytes.Length - 3);
  29. template = template.Replace("{THIS_YEAR}", DateTime.Now.Year.ToString());
  30. return template.Replace("{EMAIL_LOGO_URL}", GetTenantLogoUrl(tenantId));
  31. });
  32. }
  33. private string GetTenantLogoUrl(int? tenantId)
  34. {
  35. return _webUrlService.GetServerRootAddress().EnsureEndsWith('/') + "img/logo.png";
  36. //if (!tenantId.HasValue)
  37. //{
  38. // return _webUrlService.GetServerRootAddress().EnsureEndsWith('/') + "img/logo/logo.png";
  39. //}
  40. //var tenant = _tenantCache.Get(tenantId.Value);
  41. //return _webUrlService.GetServerRootAddress(tenant.TenancyName).EnsureEndsWith('/') + "img/logo/" + tenantId.Value+ "/logo.png";
  42. }
  43. }