自定义运输代理-在邮箱中持有电子邮件

本文关键字:电子邮件 运输代理 自定义 | 更新日期: 2023-09-27 18:08:21

我正在c#中开发一个自定义传输代理。我使用的是微软exchange server 2010。每当一封邮件来的时候,我需要根据一些条件来决定它是否应该允许去。如果它不应该被允许去我存储整个电子邮件(. email) blob在数据库中。现在我不想使用数据库持有拒绝的电子邮件。我想把那些邮件放在某个邮箱里。我想知道是否可以将电子邮件重定向到邮箱?

自定义运输代理-在邮箱中持有电子邮件

public class FIMFactory : RoutingAgentFactory

{

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

}

公共类FIMAgent: RoutingAgent{private readonly 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);
}

}