Добавление пользовательских заголовков в электронную почту

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

Однако, когда я запускаю код, я все равно получаю нижний колонтитул в электронном письме — есть ли проблема в том, как я добавляю заголовок, или есть другая интерпретация краткого описания заголовка, которая может быть решением?

ОТРЕДАКТИРУЙТЕ, чтобы добавить: я только что попытался ввести значение в виде пустой строки и получил исключение.

Дальнейшее РЕДАКТИРОВАНИЕ: коллега сообщил мне, что это может быть связано с тем, что мы все еще находимся на этапе локального тестирования, поэтому он может не попасть в правильный разъем — если это так, я добавлю его в качестве ответа, как только буду знать наверняка.