#c# #email #.net-core #email-headers
Вопрос:
Я немного покопался, и все, кажется, наводит на мысль, что это плохая идея; однако в этой ситуации это нужно сделать, и я нигде не нашел того, что на самом деле подсказывает вам, как это сделать в крайнем случае. Итак, сценарий выглядит следующим образом:
На нашем почтовом сервере Exchange действует правило, которое добавляет нижний колонтитул к письму (ничего особенного, только имя и должность), есть исключение, которое ищет пользовательский заголовок электронной почты, и если этот заголовок присутствует, он не добавит нижний колонтитул. Все это работает, как и ожидалось — электронные письма, отправленные вручную, не имеют верхнего колонтитула и, следовательно, получают нижний колонтитул (по крайней мере, для первого в цепочке).
Моя проблема в том, что в настоящее время я создаю систему, которая будет ежедневно отправлять краткое сообщение всем сотрудникам (будет ли оно автоматизировано или будет иметь кнопку, зависит от временных ограничений, но это не важно); это краткое сообщение будет отправлено от имени руководителя, но без нижнего колонтитула, что означает, что мне нужно добавить этот заголовок.
Краткое описание, которое мне дали для формата заголовка, таково:
Заголовок «X-FC-Нижний колонтитул» соответствует следующим шаблонам: «Нет»
Что я истолковал как означающее, что должен быть заголовок с именем X-FC-Footer
и значением None
— теперь я, возможно, истолковал это неправильно.
Код, который у меня есть для отправки электронного письма, выглядит следующим образом:
public async Task<string> SendNewsEmailAsync(List<string> ToEmailNames, string Subject, List<EmailNewsModel> newsModels, MailAddress sendAs, IFileService fileService)
{
_mailResponse = string.Empty;
using (SmtpClient client = new(_mailConfig.Host))
{
client.SendCompleted = new SendCompletedEventHandler((object sender, AsyncCompletedEventArgs e) =>
{
_mailResponse = (e.Error != null || e.Cancelled) ? "failure" : "success";
});
using (MailMessage message = new()
{
From = sendAs,
Subject = Subject,
SubjectEncoding = Encoding.UTF8,
HeadersEncoding = Encoding.UTF8,
BodyEncoding = Encoding.UTF8,
IsBodyHtml = true,
Priority = MailPriority.High,
Body = GetEmailContent(newsModels, fileService)
})
{
message.Headers.Add("X-FC-Footer", "None");
foreach (var newsModel in from newsModel in newsModels
where newsModel.HasAttachment()
select newsModel)
{
message.Attachments.Add(newsModel.GetAttachment());
}
foreach (string EmailName in ToEmailNames)
{
message.To.Add(new MailAddress(EmailName));
}
await client.SendMailAsync(message);
}
}
return _mailResponse;
}
Однако, когда я запускаю код, я все равно получаю нижний колонтитул в электронном письме — есть ли проблема в том, как я добавляю заголовок, или есть другая интерпретация краткого описания заголовка, которая может быть решением?
ОТРЕДАКТИРУЙТЕ, чтобы добавить: я только что попытался ввести значение в виде пустой строки и получил исключение.
Дальнейшее РЕДАКТИРОВАНИЕ: коллега сообщил мне, что это может быть связано с тем, что мы все еще находимся на этапе локального тестирования, поэтому он может не попасть в правильный разъем — если это так, я добавлю его в качестве ответа, как только буду знать наверняка.