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);
}
}