修改邮件配置
parent
bee9ea752f
commit
1c6d03af0e
|
@ -108,6 +108,9 @@
|
||||||
<Content Update="wwwroot\EmailTemplate\AdminResetUser.html">
|
<Content Update="wwwroot\EmailTemplate\AdminResetUser.html">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
<Content Update="wwwroot\EmailTemplate\EmailConfigTest.html">
|
||||||
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
|
</Content>
|
||||||
<Content Update="wwwroot\EmailTemplate\TrialSiteSurveyReject.html">
|
<Content Update="wwwroot\EmailTemplate\TrialSiteSurveyReject.html">
|
||||||
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
<CopyToOutputDirectory>Always</CopyToOutputDirectory>
|
||||||
</Content>
|
</Content>
|
||||||
|
|
|
@ -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>
|
|
@ -75,6 +75,10 @@ namespace IRaCIS.Core.Application.ViewModel
|
||||||
|
|
||||||
public string AuthorizationCode { get; set; } = string.Empty;
|
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 CriterionType CriterionTypeEnum { get; set; }
|
||||||
|
|
||||||
public string FromName { get; set; } = string.Empty;
|
public string FromName { get; set; } = string.Empty;
|
||||||
|
|
|
@ -93,13 +93,17 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
|
|
||||||
VisitEarliestScanDate = t.SourceSubjectVisit.EarliestScanDate,
|
VisitEarliestScanDate = t.SourceSubjectVisit.EarliestScanDate,
|
||||||
VisitName = t.SourceSubjectVisit.VisitName,
|
VisitName =(string?) t.SourceSubjectVisit.VisitName,
|
||||||
t.SourceSubjectVisit.IsFinalVisit,
|
IsFinalVisit=(bool?)t.SourceSubjectVisit.IsFinalVisit,
|
||||||
t.SourceSubjectVisit.PDState,
|
PDState =(PDStateEnum?) t.SourceSubjectVisit.PDState,
|
||||||
t.SourceSubjectVisit.IsEnrollmentConfirm,
|
IsEnrollmentConfirm= (bool?) t.SourceSubjectVisit.IsEnrollmentConfirm,
|
||||||
|
IsBaseline =(bool?) t.SourceSubjectVisit.IsBaseLine,
|
||||||
|
|
||||||
|
|
||||||
ModuleEarliestScanDate = t.ReadModule.SubjectVisit.EarliestScanDate,
|
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.SourceSubjectVisitId,
|
||||||
t.SouceReadModuleId,
|
t.SouceReadModuleId,
|
||||||
t.SubjectId,
|
t.SubjectId,
|
||||||
|
@ -114,9 +118,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
//有序与否
|
//有序与否
|
||||||
t.TrialReadingCriterion.IsReadingTaskViewInOrder,
|
t.TrialReadingCriterion.IsReadingTaskViewInOrder,
|
||||||
|
|
||||||
MoudulePDState = t.ReadModule.SubjectVisit.PDState,
|
|
||||||
t.TrialId,
|
t.TrialId,
|
||||||
IsBaseline = t.SourceSubjectVisit.IsBaseLine,
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
@ -133,7 +135,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
if (taskInfo.ReadingTaskState == ReadingTaskState.HaveSigned)
|
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;
|
businessScenarioEnum = CommonDocumentBusinessScenario.EnrollConfirmed;
|
||||||
|
|
||||||
|
@ -163,9 +165,11 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.Include(t => t.TrialEmailNoticeUserList).FirstOrDefaultAsync();
|
.Include(t => t.TrialEmailNoticeUserList).FirstOrDefaultAsync();
|
||||||
|
|
||||||
|
|
||||||
if (emailConfig == null)
|
if (emailConfig == null || emailConfig.IsAutoSend==false)
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException("找不到该项目标准场景下邮件的配置");
|
//throw new BusinessValidationFailedException("找不到该项目标准场景下邮件的配置");
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
#endregion
|
#endregion
|
||||||
|
@ -190,6 +194,12 @@ namespace IRaCIS.Core.Application.Service
|
||||||
{
|
{
|
||||||
|
|
||||||
sendEmailConfig.FromEmailAddress = new MimeKit.MailboxAddress(emailConfig.FromName, emailConfig.FromEmail);
|
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"));
|
sendEmailConfig.ToMailAddressList.Add(new MimeKit.MailboxAddress("ddd", "872297557@qq.com"));
|
||||||
|
@ -197,7 +207,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
throw new BusinessValidationFailedException("发件邮箱有误,请核实");
|
throw new BusinessValidationFailedException("项目发件邮箱配置有误,请核实");
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var item in toUserList)
|
foreach (var item in toUserList)
|
||||||
|
@ -510,7 +520,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
["ResearchProgramNo"] = taskInfo.ResearchProgramNo,
|
["ResearchProgramNo"] = taskInfo.ResearchProgramNo,
|
||||||
["TrialSiteCode"] = taskInfo.TrialSiteCode,
|
["TrialSiteCode"] = taskInfo.TrialSiteCode,
|
||||||
["SubjectCode"] = taskInfo.SubjectCode,
|
["SubjectCode"] = taskInfo.SubjectCode,
|
||||||
["VisitName"] = taskInfo.VisitName,
|
["VisitName"] = taskInfo.SourceSubjectVisitId != null ? taskInfo.VisitName:taskInfo.ModuleVisitName,
|
||||||
["EarliestScanDate"] = taskInfo.SourceSubjectVisitId != null ? taskInfo.VisitEarliestScanDate : taskInfo.ModuleEarliestScanDate,
|
["EarliestScanDate"] = taskInfo.SourceSubjectVisitId != null ? taskInfo.VisitEarliestScanDate : taskInfo.ModuleEarliestScanDate,
|
||||||
["SignTime"] = taskInfo.SignTime,
|
["SignTime"] = taskInfo.SignTime,
|
||||||
["Result"] = answer
|
["Result"] = answer
|
||||||
|
@ -622,8 +632,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
public async Task<IResponseOutput> AddOrUpdateTrialEmailNoticeConfig(TrialEmailNoticeConfigAddOrEdit addOrEditTrialEmailNoticeConfig)
|
public async Task<IResponseOutput> AddOrUpdateTrialEmailNoticeConfig(TrialEmailNoticeConfigAddOrEdit addOrEditTrialEmailNoticeConfig)
|
||||||
{
|
{
|
||||||
|
await TestEmailConfigAsync(addOrEditTrialEmailNoticeConfig);
|
||||||
|
|
||||||
//var entity = await _trialEmailNoticeConfigRepository.InsertOrUpdateAsync(addOrEditTrialEmailNoticeConfig);
|
|
||||||
|
|
||||||
if (addOrEditTrialEmailNoticeConfig.Id == null)
|
if (addOrEditTrialEmailNoticeConfig.Id == null)
|
||||||
{
|
{
|
||||||
|
@ -677,6 +687,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
await _trialEmailNoticeConfigRepository.UpdateFromDTOAsync(addOrEditTrialEmailNoticeConfig);
|
await _trialEmailNoticeConfigRepository.UpdateFromDTOAsync(addOrEditTrialEmailNoticeConfig);
|
||||||
|
|
||||||
|
|
||||||
await _trialEmailNoticeConfigRepository.SaveChangesAsync();
|
await _trialEmailNoticeConfigRepository.SaveChangesAsync();
|
||||||
|
|
||||||
return ResponseOutput.Ok();
|
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}")]
|
[HttpDelete("{trialEmailNoticeConfigId:guid}")]
|
||||||
public async Task<IResponseOutput> DeleteTrialEmailNoticeConfig(Guid trialEmailNoticeConfigId)
|
public async Task<IResponseOutput> DeleteTrialEmailNoticeConfig(Guid trialEmailNoticeConfigId)
|
||||||
{
|
{
|
||||||
|
|
|
@ -1183,7 +1183,7 @@ namespace IRaCIS.Application.Services
|
||||||
|
|
||||||
await _visitTaskRepository.SaveChangesAsync();
|
await _visitTaskRepository.SaveChangesAsync();
|
||||||
|
|
||||||
//await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(visitTaskId);
|
await _trialEmailNoticeConfigService.BaseBusinessScenarioSendEmailAsync(visitTaskId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -22,6 +22,11 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
[Required]
|
[Required]
|
||||||
public Guid TrialId { get; set; }
|
public Guid TrialId { get; set; }
|
||||||
|
|
||||||
|
|
||||||
|
public string SMTPServerAddress { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public int SMTPServerPort { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
public string AuthorizationCode { get; set; } = string.Empty;
|
public string AuthorizationCode { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue