修改邮件配置

Uat_Study
hang 2022-10-28 16:51:53 +08:00
parent bee9ea752f
commit 1c6d03af0e
6 changed files with 127 additions and 14 deletions

View File

@ -108,6 +108,9 @@
<Content Update="wwwroot\EmailTemplate\AdminResetUser.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\EmailTemplate\EmailConfigTest.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>
<Content Update="wwwroot\EmailTemplate\TrialSiteSurveyReject.html">
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
</Content>

View File

@ -0,0 +1,27 @@
<!DOCTYPE html>
<html lang='en'>
<head>
<meta charset='UTF-8'>
<title>Title</title>
</head>
<body style='font-family: 微软雅黑;padding: 0;margin: 0;'>
<div style='padding-left: 40px;background: #f6f6f6'>
<div style='padding-top: 20px;'>
<div style='line-height: 40px;font-size: 18px'>
您好:
</div>
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
感谢您使用展影云平台。
</div>
<div style='line-height: 40px;padding-left: 40px;margin-bottom: 10px;'>
{0}。
</div>
<div style='line-height: 24px;font-size: 14px;color:#333;margin-top: 20px;padding-bottom: 40px;'>
<div>祝您顺利!/Best Regards</div>
<div style="font-size: 14px;">上海展影医疗科技有限公司</div>
</div>
</div>
</div>
</body>
</html>

View File

@ -75,6 +75,10 @@ namespace IRaCIS.Core.Application.ViewModel
public string AuthorizationCode { get; set; } = string.Empty;
public string SMTPServerAddress { get; set; } = string.Empty;
public int SMTPServerPort { get; set; }
public CriterionType CriterionTypeEnum { get; set; }
public string FromName { get; set; } = string.Empty;

View File

@ -93,13 +93,17 @@ namespace IRaCIS.Core.Application.Service
VisitEarliestScanDate = t.SourceSubjectVisit.EarliestScanDate,
VisitName = t.SourceSubjectVisit.VisitName,
t.SourceSubjectVisit.IsFinalVisit,
t.SourceSubjectVisit.PDState,
t.SourceSubjectVisit.IsEnrollmentConfirm,
VisitName =(string?) t.SourceSubjectVisit.VisitName,
IsFinalVisit=(bool?)t.SourceSubjectVisit.IsFinalVisit,
PDState =(PDStateEnum?) t.SourceSubjectVisit.PDState,
IsEnrollmentConfirm= (bool?) t.SourceSubjectVisit.IsEnrollmentConfirm,
IsBaseline =(bool?) t.SourceSubjectVisit.IsBaseLine,
ModuleEarliestScanDate = t.ReadModule.SubjectVisit.EarliestScanDate,
ModuleVisitName = t.ReadModule.SubjectVisit.VisitName,
ModuleVisitName = (string?) t.ReadModule.SubjectVisit.VisitName,
MoudulePDState = (PDStateEnum?)t.ReadModule.SubjectVisit.PDState,
t.SourceSubjectVisitId,
t.SouceReadModuleId,
t.SubjectId,
@ -114,9 +118,7 @@ namespace IRaCIS.Core.Application.Service
//有序与否
t.TrialReadingCriterion.IsReadingTaskViewInOrder,
MoudulePDState = t.ReadModule.SubjectVisit.PDState,
t.TrialId,
IsBaseline = t.SourceSubjectVisit.IsBaseLine,
@ -133,7 +135,7 @@ namespace IRaCIS.Core.Application.Service
if (taskInfo.ReadingTaskState == ReadingTaskState.HaveSigned)
{
//入组确认场景
if (taskInfo.IsEnrollmentConfirm && taskInfo.IsEnrollementQualificationConfirm && taskInfo.IsBaseline)
if (taskInfo.IsEnrollmentConfirm==true && taskInfo.IsEnrollementQualificationConfirm==true && taskInfo.IsBaseline==true)
{
businessScenarioEnum = CommonDocumentBusinessScenario.EnrollConfirmed;
@ -163,9 +165,11 @@ namespace IRaCIS.Core.Application.Service
.Include(t => t.TrialEmailNoticeUserList).FirstOrDefaultAsync();
if (emailConfig == null)
if (emailConfig == null || emailConfig.IsAutoSend==false)
{
throw new BusinessValidationFailedException("找不到该项目标准场景下邮件的配置");
//throw new BusinessValidationFailedException("找不到该项目标准场景下邮件的配置");
return;
}
#endregion
@ -190,6 +194,12 @@ namespace IRaCIS.Core.Application.Service
{
sendEmailConfig.FromEmailAddress = new MimeKit.MailboxAddress(emailConfig.FromName, emailConfig.FromEmail);
sendEmailConfig.AuthorizationCode = emailConfig.AuthorizationCode;
sendEmailConfig.UserName = emailConfig.FromEmail;
sendEmailConfig.Host = emailConfig.SMTPServerAddress;
sendEmailConfig.Port = emailConfig.SMTPServerPort;
//测试
sendEmailConfig.ToMailAddressList.Add(new MimeKit.MailboxAddress("ddd", "872297557@qq.com"));
@ -197,7 +207,7 @@ namespace IRaCIS.Core.Application.Service
}
else
{
throw new BusinessValidationFailedException("发件邮箱有误,请核实");
throw new BusinessValidationFailedException("项目发件邮箱配置有误,请核实");
}
foreach (var item in toUserList)
@ -510,7 +520,7 @@ namespace IRaCIS.Core.Application.Service
["ResearchProgramNo"] = taskInfo.ResearchProgramNo,
["TrialSiteCode"] = taskInfo.TrialSiteCode,
["SubjectCode"] = taskInfo.SubjectCode,
["VisitName"] = taskInfo.VisitName,
["VisitName"] = taskInfo.SourceSubjectVisitId != null ? taskInfo.VisitName:taskInfo.ModuleVisitName,
["EarliestScanDate"] = taskInfo.SourceSubjectVisitId != null ? taskInfo.VisitEarliestScanDate : taskInfo.ModuleEarliestScanDate,
["SignTime"] = taskInfo.SignTime,
["Result"] = answer
@ -622,8 +632,8 @@ namespace IRaCIS.Core.Application.Service
public async Task<IResponseOutput> AddOrUpdateTrialEmailNoticeConfig(TrialEmailNoticeConfigAddOrEdit addOrEditTrialEmailNoticeConfig)
{
await TestEmailConfigAsync(addOrEditTrialEmailNoticeConfig);
//var entity = await _trialEmailNoticeConfigRepository.InsertOrUpdateAsync(addOrEditTrialEmailNoticeConfig);
if (addOrEditTrialEmailNoticeConfig.Id == null)
{
@ -677,6 +687,7 @@ namespace IRaCIS.Core.Application.Service
await _trialEmailNoticeConfigRepository.UpdateFromDTOAsync(addOrEditTrialEmailNoticeConfig);
await _trialEmailNoticeConfigRepository.SaveChangesAsync();
return ResponseOutput.Ok();
@ -686,6 +697,69 @@ namespace IRaCIS.Core.Application.Service
}
private async Task TestEmailConfigAsync(TrialEmailNoticeConfigAddOrEdit config)
{
var toUserList = await _repository.Where<TrialUser>(t => t.TrialId == config.TrialId && config.ToUserTypeList.Contains(t.User.UserTypeEnum)).Select(t => new { t.User.EMail, t.User.FullName }).ToListAsync();
if (!config.FromEmail.Contains("@") || string.IsNullOrEmpty(config.FromEmail))
{
throw new BusinessValidationFailedException("项目发件邮箱配置有误,请核实");
}
if (toUserList.Count() == 0|| toUserList.Where(t=>t.EMail.Contains("@")).Count()==0)
{
throw new BusinessValidationFailedException("项目没有有效的收件人,无法发送邮件");
}
var sendEmailConfig = new SMTPEmailConfig();
sendEmailConfig.FromEmailAddress = new MimeKit.MailboxAddress(config.FromName, config.FromEmail);
sendEmailConfig.AuthorizationCode = config.AuthorizationCode;
sendEmailConfig.UserName = config.FromEmail;
sendEmailConfig.Host = config.SMTPServerAddress;
sendEmailConfig.Port = config.SMTPServerPort;
sendEmailConfig.ToMailAddressList.Add(new MimeKit.MailboxAddress(config.FromName, config.FromEmail));
var pathToFile = _hostEnvironment.WebRootPath
+ Path.DirectorySeparatorChar.ToString()
+ "EmailTemplate"
+ Path.DirectorySeparatorChar.ToString()
+ "EmailConfigTest.html";
sendEmailConfig.TopicDescription = "项目邮件测试";
using (StreamReader SourceReader = System.IO.File.OpenText(pathToFile))
{
var templateInfo = SourceReader.ReadToEnd();
sendEmailConfig.HtmlBodyStr = string.Format(templateInfo,
$" 收到此邮件,代表邮件配置正确"
);
}
try
{
await SendEmailHelper.SendEmailAsync(sendEmailConfig);
}
catch (Exception ex)
{
throw new BusinessValidationFailedException("发件人配置错误,请核对服务器地址或者授权码是否填写有误"+ex.Message);
}
}
[HttpDelete("{trialEmailNoticeConfigId:guid}")]
public async Task<IResponseOutput> DeleteTrialEmailNoticeConfig(Guid trialEmailNoticeConfigId)
{

View File

@ -1183,7 +1183,7 @@ namespace IRaCIS.Application.Services
await _visitTaskRepository.SaveChangesAsync();
//await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(visitTaskId);
await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(visitTaskId);
}

View File

@ -22,6 +22,11 @@ namespace IRaCIS.Core.Domain.Models
[Required]
public Guid TrialId { get; set; }
public string SMTPServerAddress { get; set; } = string.Empty;
public int SMTPServerPort { get; set; }
[Required]
public string AuthorizationCode { get; set; } = string.Empty;