ASP.NET CORE Web API-使用Hangfire Cron Job的付款通知电子邮件调度程序



我在ASP.NET Core-6 Web API实体框架中有一个支付应用程序。我有这个型号:

付款:

public class Payment
{
public Guid Id { get; set; }
public string ReferenceNumber { get; set; }
public string Email { get; set; }
public DateTime TransactionDate { get; set; }
public DateTime? DueDate { get; set; }
public decimal Amount { get; set; }
}

电子邮件设置:

public class EmailSettings
{
public string Username { get; set; }
public string Password { get; set; }
public string DisplayName { get; set; }
public string Host { get; set; }
public int Port { get; set; }
}

电子邮件服务:

public async Task<string> SendEmailAsync(List<string> ToEmailName, string Subject, EventModel Data)
{
_mailResponse = string.Empty;
using (SmtpClient smtpClient = new SmtpClient(_mailConfig.Host, _mailConfig.Port))
{
smtpClient.UseDefaultCredentials = true;
smtpClient.Credentials = new NetworkCredential(_mailConfig.Username, _mailConfig.Password);
smtpClient.EnableSsl = true;
smtpClient.DeliveryMethod = SmtpDeliveryMethod.Network;
smtpClient.SendCompleted += new SendCompletedEventHandler((object sender, AsyncCompletedEventArgs e) =>
{
_mailResponse = (e.Error != null || e.Cancelled != false) ? "failure" : "success";
});
MailMessage message = new MailMessage
{
From = new MailAddress(_mailConfig.Username, _mailConfig.DisplayName),
Subject = Subject,
SubjectEncoding = Encoding.UTF8,
BodyEncoding = Encoding.UTF8,
HeadersEncoding = Encoding.UTF8,
IsBodyHtml = true,
Body = GetEmailContent(Subject, Data),
Priority = MailPriority.High
};
foreach (string EmailName in ToEmailName)
{
message.To.Add(new MailAddress(EmailName));
}
await smtpClient.SendMailAsync(message);
}
return _mailResponse;
}

我正在使用HangFire。

我希望应用程序使用HangFire运行时间表,并使用ReferenceNumber和DueDate迭代支付模型。然后在截止日期前14天向受影响的电子邮件发送电子邮件通知。提醒受影响的用户,他的付款应在DueDate上完成

我该如何做到这一点?

这可以通过直接根据DueDate-14天(如果不到14天,则为当前日期(安排通知来完成。此外,在发送提醒之前,你可能需要对你的通知进行一些额外的检查,看看是否已经付款。

BackgroundJob.Schedule(
() => NotficationService.SendPaymentNotificationEmail(Payment.Id),
TimeSpan.FromDays(DueDate.AddDays(-14)));

参考:https://docs.hangfire.io/en/latest/background-methods/calling-methods-with-delay.html

最新更新