初步完成邮件功能

This commit is contained in:
2025-09-13 19:08:43 +08:00
parent 15e2caed22
commit 42aaf9c01b
45 changed files with 3145 additions and 12 deletions

View File

@@ -0,0 +1,20 @@
using DMS.Core.Models;
namespace DMS.Core.Interfaces.Repositories
{
/// <summary>
/// 邮件账户仓储接口
/// </summary>
public interface IEmailAccountRepository : IBaseRepository<EmailAccount>
{
/// <summary>
/// 获取默认邮件账户
/// </summary>
Task<EmailAccount> GetDefaultAccountAsync();
/// <summary>
/// 获取所有启用的邮件账户
/// </summary>
Task<List<EmailAccount>> GetActiveAccountsAsync();
}
}

View File

@@ -0,0 +1,20 @@
using DMS.Core.Models;
namespace DMS.Core.Interfaces.Repositories
{
/// <summary>
/// 邮件日志仓储接口
/// </summary>
public interface IEmailLogRepository : IBaseRepository<EmailLog>
{
/// <summary>
/// 根据邮件消息ID获取日志
/// </summary>
Task<List<EmailLog>> GetByEmailMessageIdAsync(int emailMessageId);
/// <summary>
/// 根据日期范围获取日志
/// </summary>
Task<List<EmailLog>> GetByDateRangeAsync(DateTime startDate, DateTime endDate);
}
}

View File

@@ -0,0 +1,20 @@
using DMS.Core.Models;
namespace DMS.Core.Interfaces.Repositories
{
/// <summary>
/// 邮件消息仓储接口
/// </summary>
public interface IEmailMessageRepository : IBaseRepository<EmailMessage>
{
/// <summary>
/// 根据状态获取邮件消息
/// </summary>
Task<List<EmailMessage>> GetByStatusAsync(EmailSendStatus status);
/// <summary>
/// 获取指定时间范围内的邮件消息
/// </summary>
Task<List<EmailMessage>> GetByDateRangeAsync(DateTime startDate, DateTime endDate);
}
}

View File

@@ -0,0 +1,20 @@
using DMS.Core.Models;
namespace DMS.Core.Interfaces.Repositories
{
/// <summary>
/// 邮件模板仓储接口
/// </summary>
public interface IEmailTemplateRepository : IBaseRepository<EmailTemplate>
{
/// <summary>
/// 根据代码获取邮件模板
/// </summary>
Task<EmailTemplate> GetByCodeAsync(string code);
/// <summary>
/// 获取所有启用的邮件模板
/// </summary>
Task<List<EmailTemplate>> GetActiveTemplatesAsync();
}
}

View File

@@ -0,0 +1,33 @@
using DMS.Core.Models;
namespace DMS.Core.Interfaces.Services
{
/// <summary>
/// 邮件服务接口
/// </summary>
public interface IEmailService
{
/// <summary>
/// 异步发送邮件
/// </summary>
/// <param name="message">邮件消息</param>
/// <param name="account">邮件账户</param>
/// <returns>发送是否成功</returns>
Task<bool> SendEmailAsync(EmailMessage message, EmailAccount account);
/// <summary>
/// 异步接收邮件
/// </summary>
/// <param name="account">邮件账户</param>
/// <param name="count">接收邮件数量</param>
/// <returns>接收到的邮件列表</returns>
Task<List<EmailMessage>> ReceiveEmailsAsync(EmailAccount account, int count = 10);
/// <summary>
/// 测试邮件账户连接
/// </summary>
/// <param name="account">邮件账户</param>
/// <returns>连接是否成功</returns>
Task<bool> TestConnectionAsync(EmailAccount account);
}
}