Транспортный агент Exchange в C#: добавить UPN отправителя в заголовок сообщения.
Я пытаюсь написать свой самый первый транспортный агент Exchange 2013. Транспортный агент должен добавить UPN аутентифицированного пользователя ко всем сообщениям, которые отправляются через транспортную службу. Это должно относиться ко всем исходящим сообщениям, отправленным аутентифицированными пользователями, а не к неаутентифицированным входящим сообщениям.
Вот что я получил сейчас (основываясь на https://code.msdn.microsoft.com/exchange/exchange-2013-build-an-32f62f5a):
namespace Microsoft.Exchange.Samples.Agents.XHeader
{
using System;
using System.IO;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using Microsoft.Exchange.Data.Mime;
using Microsoft.Exchange.Data.Transport;
using Microsoft.Exchange.Data.Transport.Smtp;
public class XHeaderAgentFactory : SmtpReceiveAgentFactory
{
public override SmtpReceiveAgent CreateAgent(SmtpServer server)
{
return new XHeaderAgent();
}
}
public class XHeaderAgent : SmtpReceiveAgent
{
public XHeaderAgent()
{
Debug.WriteLine("[XHeaderAgent] Agent constructor");
this.OnEndOfHeaders += new EndOfHeadersEventHandler(this.OnEndOfHeadersHandler);
}
public void OnEndOfHeadersHandler(ReceiveMessageEventSource source, EndOfHeadersEventArgs args)
{
string senderUpn = "test@example.local";
TextHeader nhNewHeader = new TextHeader("X-SenderName", senderUpn);
args.Headers.AppendChild(nhNewHeader);
return;
}
}
}
Это добавляет заголовок "X-SenderName: test@example.local" к каждому письму. Итак, у меня есть две проблемы:
- Как заменить test@example.local фактическим UPN отправляющего пользователя?
- Как добавить этот заголовок только для аутентифицированных исходящих писем, а не для неаутентифицированных входящих писем?
Любая помощь будет принята с благодарностью.