diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 65d6fc397..e17f1ce5c 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -9438,7 +9438,7 @@ 融合的CTSeriesId - + 标记id @@ -16549,11 +16549,17 @@ 系统邮件配置表 - + 系统邮件配置表 + + + 获取邮件列表 + + + 批量更新邮件主题中英文 diff --git a/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs index c2388436d..cae69c208 100644 --- a/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Common/EmailNoticeConfigService.cs @@ -4,9 +4,14 @@ // 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。 //-------------------------------------------------------------------- +using DocumentFormat.OpenXml.Spreadsheet; using IRaCIS.Core.Application.Helper; using IRaCIS.Core.Domain.Share; +using MailKit; +using MailKit.Net.Imap; +using MailKit.Search; using Microsoft.AspNetCore.Mvc; +using Microsoft.Extensions.Options; using NPOI.SS.Formula.Functions; using System.Text.RegularExpressions; @@ -17,8 +22,56 @@ namespace IRaCIS.Core.Application.Contracts /// [ApiExplorerSettings(GroupName = "Common")] public class EmailNoticeConfigService(IRepository _emailNoticeConfigrepository, - IRepository _emailNoticeUserTypeRepository, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IEmailNoticeConfigService + IRepository _emailNoticeUserTypeRepository, + IOptionsMonitor systemEmailConfig, + IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IEmailNoticeConfigService { + private readonly SystemEmailSendConfig _systemEmailConfig = systemEmailConfig.CurrentValue; + + /// + /// 获取邮件列表 + /// + /// + [HttpPost] + public async Task GetEmailList() + { + + List emailList = new List(); + + + + + + + + using var client = new ImapClient(); + await client.ConnectAsync(_systemEmailConfig.Host, 993, true); + await client.AuthenticateAsync(_systemEmailConfig.FromEmail, _systemEmailConfig.AuthorizationCode); + + var personal = client.GetFolder(client.PersonalNamespaces[0]); + var sent = personal.GetSubfolders() + .First(f => new[] { "已发送邮件", "Sent", "Sent Messages" } + .Contains(f.Name, StringComparer.OrdinalIgnoreCase)); + await sent.OpenAsync(FolderAccess.ReadOnly); + + List list= new List(); + for (int i = 0; i < sent.Count; i++) + { + var msg = await sent.GetMessageAsync(i); + list.Add(new { + Subject= msg.Subject, + From= msg.From.ToString(), + To = msg.To.ToString(), + TextBody = msg.TextBody ?? "", + HtmlBody = msg.HtmlBody ?? "", + Date = msg.Date.UtcDateTime + }); + } + await client.DisconnectAsync(true); + return list; + + + } [HttpPost] public async Task> GetEmailNoticeConfigList(EmailNoticeConfigQuery inQuery) diff --git a/IRaCIS.Core.Application/Service/Common/MailService.cs b/IRaCIS.Core.Application/Service/Common/MailService.cs index c46e785ff..d7f695534 100644 --- a/IRaCIS.Core.Application/Service/Common/MailService.cs +++ b/IRaCIS.Core.Application/Service/Common/MailService.cs @@ -5,9 +5,13 @@ using IRaCIS.Core.Domain.Models; using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Infrastructure; using MailKit; +using MailKit.Net.Imap; +using MailKit.Search; +using MailKit.Security; using Medallion.Threading; using Microsoft.AspNetCore.Hosting; using Microsoft.AspNetCore.Identity; +using Microsoft.AspNetCore.Mvc; using Microsoft.Extensions.Options; using MimeKit; using System.Net.Mail; @@ -74,7 +78,7 @@ namespace IRaCIS.Core.Application.Service Task AfterUserModifyPasswordSendEmailAsync(Guid userId); } - + [ApiExplorerSettings(GroupName = "Common")] public class MailVerificationService(IRepository _verificationCodeRepository, IRepository _systemBasicDatarepository, IRepository _visitTaskRepository, @@ -89,16 +93,14 @@ namespace IRaCIS.Core.Application.Service IRepository _userTypeRepository, IRepository _doctorTypeRepository, IRepository _dictionaryRepository, + IRepository _emailNoticeConfigrepository, IOptionsMonitor systemEmailConfig, IDistributedLockProvider _distributedLockProvider, IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService, IMailVerificationService { private readonly SystemEmailSendConfig _systemEmailConfig = systemEmailConfig.CurrentValue; - - //public async Task GetEmailList() - //{ - //} + private async Task GetEmailSubejctAndHtmlInfoAndBuildAsync(EmailBusinessScenario scenario, MimeMessage messageToSend, Func<(string topicStr, string htmlBodyStr), (string topicStr, string htmlBodyStr)> emailFunc)