Custom Transport Agent - хранение электронной почты в почтовом ящике

Я разрабатываю пользовательский транспортный агент на C#. Я использую Microsoft Exchange Server 2010 для этого. Всякий раз, когда приходит электронное письмо, мне нужно решить, должно ли оно быть разрешено или нет на основании какого-либо условия. Если это не должно быть разрешено, я сохраняю всю электронную почту (.eml) как блоб в базе данных. Теперь я хочу не использовать базу данных для хранения отклоненных писем. Я хочу держать эти письма в каком-то почтовом ящике. Я хочу знать, можно ли перенаправить письмо в почтовый ящик?

1 ответ

      public class FIMFactory : RoutingAgentFactory

{

      public override RoutingAgent CreateAgent(SmtpServer server)
{
    return new FIMAgent(server);
}

}

открытый класс FIMAgent: RoutingAgent{частный только для чтения SmtpServer _server;

      public FIMAgent(SmtpServer server)
{
    _server = server ?? throw new ArgumentNullException(nameof(server));
    OnResolvedMessage += FIMAgent_OnResolvedMessage;
}

private void FIMAgent_OnResolvedMessage(ResolvedMessageEventSource source, QueuedMessageEventArgs e)
{ 
    var mi = e.MailItem;
    var emailMessage = EmailMessage.Create(BodyFormat.Text, false, "utf-8");
    emailMessage.Sender = new EmailRecipient(mi.Message.Sender.DisplayName, mi.Message.Sender.SmtpAddress);
    emailMessage.To.Add(new EmailRecipient(mi.Message.Sender.DisplayName, mi.Message.Sender.SmtpAddress));
    emailMessage.Subject = "...";
    
    using (var stream1 = emailMessage.Body.GetContentWriteStream())
    using (var sw = new StreamWriter(stream1, new UTF8Encoding(false)))
    {
        sw.WriteLine("...");
    }
    
    _server.SubmitMessage(emailMessage);
}

}

Другие вопросы по тегам