Files
DigitalData.MessagingService/src/core/DigitalData.MessagingService.Application/Common/Interfaces/IImapEmailService.cs

50 lines
1.5 KiB
C#

#if NET
using DigitalData.MessagingService.Application.Common.Dto;
using DigitalData.MessagingService.Domain.Entities;
namespace DigitalData.MessagingService.Application.Common.Interfaces;
/// <summary>
/// Service interface for reading emails via IMAP.
/// </summary>
public interface IImapEmailService
{
/// <summary>
///
/// </summary>
/// <param name="account"></param>
/// <param name="folder"></param>
/// <param name="cancel"></param>
/// <returns></returns>
Task<EmailSyncResult> SyncEmailsAsync(
EmailAccount account,
string folder = "INBOX",
CancellationToken cancel = default);
/// <summary>
/// Marks a message as seen (read) on the server.
/// </summary>
Task MarkAsSeenAsync(
EmailAccount account,
long uid,
string folder = "INBOX",
CancellationToken cancellationToken = default);
/// <summary>
/// Gets the last IMAP sync date for the specified account and folder.
/// </summary>
/// <param name="accountId"></param>
/// <param name="folder"></param>
/// <returns></returns>
DateTime? GetLastImapSyncDate(int accountId, string folder = "INBOX");
/// <summary>
/// Sends an email via SMTP using the account credentials and appends the sent message
/// to the account's IMAP Sent Items folder.
/// </summary>
Task SendAndAppendAsync(
EmailContext context,
string sentFolder = "Sent",
CancellationToken cancellationToken = default);
}
#endif