src/ZKEACMS.Mail/SendEmailBackgroundService.cs
(开头部分) 1KB这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。
/* http://www.zkea.net/
* Copyright (c) ZKEASOFT. All rights reserved.
* http://www.zkea.net/licenses */
using Easy.Notification;
using Easy.Notification.Queue;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace ZKEACMS.Mail
{
public class SendEmailBackgroundService : BackgroundService
{
private readonly IServiceProvider _serviceProvider;
private readonly IEmailQueue _emailQueue;
private readonly ILogger<SendEmailBackgroundService> _logger;
public SendEmailBackgroundService(IServiceProvider serviceProvider, IEmailQueue emailQueue, ILogger<SendEmailBackgroundService> logger)
{
_serviceProvider = serviceProvider;
_emailQueue = emailQueue;
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
var mailMessage = await _emailQueue.Receive(stoppingToken);
if (mailMessage == null) continue;
using (var scopeService = _serviceProvider.CreateScope())
{
var emailNotification = scopeService.ServiceProvider.GetService<IEmailNotification>();
mailMessage.RetryCount++;
try
{
await emailNotification.SendAsync(mailMessage);
}
catch (Exception ex)
{
_logger.LogError(ex, ex.Message);
//todo:Retry
//if (mailMessage.RetryCount < 5)
// await _emailQueue.Send(mailMessage);
}
}
}
}
后面还有 2 行代码,解锁后查看完整代码
24 小时内免费解锁 3 个项目,之后 1 算力/个。 规则说明
AI 解读 AI
登录后可用,每次 10 算力,解读结果公开显示在下面。
还没有人解读过这个文件。