Одна из мелких фич, упомянутых в What’s New in the .NET Framework 4.5 Beta в разделе Networking – Support for Email Address Internationalization. Ссылка из What’s New оптимистично ведет в MSDN по System.Net.Mail, где про EAI, естественно, упоминаний уже нет.

Суть фичи на самом деле – новое свойство SmtpClient.DeliveryFormat, позволяющее включить поддержку UTF-8 в заголовках, в соответствии с RFC 5336 RFC 6531.

SmtpClient client = new SmtpClient();
client.DeliveryMethod = SmtpDeliveryMethod.SpecifiedPickupDirectory;

client.PickupDirectoryLocation = @"d:tempsmtptest";
Directory.CreateDirectory(client.PickupDirectoryLocation);
client.Send("Василий <test@example.com>", "Павел <test2@example.com>", "тема", "тело");

client.DeliveryFormat = SmtpDeliveryFormat.International;
client.Send("Василий <test@example.com>", "Павел <test2@example.com>", "тема", "тело");

Результат вызова со старым форматом доставки:

X-Sender: =?utf-8?Q?=D0=92=D0=B0=D1=81=D0=B8=D0=BB=D0=B8=D0=B9?=
 <test@example.com>
X-Receiver: =?utf-8?Q?=D0=9F=D0=B0=D0=B2=D0=B5=D0=BB?= <test2@example.com>
MIME-Version: 1.0
From: =?utf-8?Q?=D0=92=D0=B0=D1=81=D0=B8=D0=BB=D0=B8=D0=B9?=
 <test@example.com>
To: =?utf-8?Q?=D0=9F=D0=B0=D0=B2=D0=B5=D0=BB?= <test2@example.com>
Date: 16 Apr 2012 21:32:53 +0300
Subject: =?utf-8?B?0YLQtdC80LA=?=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64

0YLQtdC70L4=

С новым форматом доставки:

X-Sender: "Василий" <test@example.com>
X-Receiver: "Павел" <test2@example.com>
MIME-Version: 1.0
From: "Василий" <test@example.com>
To: "Павел" <test2@example.com>
Date: 16 Apr 2012 21:32:53 +0300
Subject: тема
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: base64

0YLQtdC70L4=

P.S. Пост для себя, на всякий случай, чтобы не вспоминать в следующий раз “что такое DeliveryFormat и EAI?” :)

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>