using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infrastructure; using MimeKit; using System; using System.Collections.Generic; using System.Globalization; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IRaCIS.Core.Application.MassTransit.Consumer; public static class CommonEmailHelper { public static async Task GetEmailSubejctAndHtmlInfoAndBuildAsync(IRepository _emailNoticeConfigrepository, EmailBusinessScenario scenario, MimeMessage messageToSend, Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailFunc) { var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; var configInfo = await _emailNoticeConfigrepository.Where(t => t.BusinessScenarioEnum == scenario).FirstOrDefaultAsync(); if (configInfo == null) { throw new BusinessValidationFailedException("系统未找到当前场景邮件配置信息,请联系运维人员核查"); } var (topicStr, htmlBodyStr) = isEn_US ? (configInfo.EmailTopic, configInfo.EmailHtmlContent) : (configInfo.EmailTopicCN, configInfo.EmailHtmlContentCN); try { //每个场景修改主题 和body的逻辑不一样 (topicStr, htmlBodyStr) = emailFunc((topicStr, htmlBodyStr)); } catch (Exception ex) { throw new BusinessValidationFailedException("邮件模板内容有误,填充内容出现问题,请联系运维人员核查"); } messageToSend.Subject = topicStr; var builder = new BodyBuilder(); builder.HtmlBody = htmlBodyStr; messageToSend.Body = builder.ToMessageBody(); return configInfo; } public static string ReplaceCompanyName(SystemEmailSendConfig _systemEmailConfig, string needDealtxt) { var isEn_US = CultureInfo.CurrentCulture.Name == StaticData.CultureInfo.en_US; var str = needDealtxt.Replace("{company}", isEn_US ? _systemEmailConfig.CompanyName : _systemEmailConfig.CompanyNameCN) .Replace("{company abbreviation}", isEn_US ? _systemEmailConfig.CompanyShortName : _systemEmailConfig.CompanyShortNameCN); return str; } }