Использование кодировок в почтовом сообщении

При работе с электронной почтой существует возможность указывать кодировку для объектов ИнтернетПочтовоеСообщение, ИнтернетПочтовыйАдрес, ИнтернетПочтовоеВложение, ИнтернетПочтовыйТекст.

Сообщение состоит из двух главных частей — заголовка сообщения и тела письма. Тело письма, в свою очередь, может содержать подчасти, каждая из которых также состоит из заголовка подчасти и тела подчасти. Кодировка указывается в заголовках, а также отдельно (но в заголовке) для отображаемых имен и имен вложений (которые также находятся в заголовке). При чтении письма большим приоритетом обладает кодировка, указанная для отображаемых имен и имен вложений, затем кодировка, указанная в заголовке подчасти, и, наконец, меньший приоритет имеет кодировка, указанная в главном заголовке сообщения.

У каждого из перечисленных выше объектов есть свойство Кодировка. Это свойство принимает текстовое наименование кодировки для отправляемых сообщений или содержит текстовое представление кодировки полученного сообщения. В случае, если кодировка в принятом сообщении не указана (например, когда все символы в сообщении занимают не больше 7 бит на символ или когда указана кодировка для всего сообщения в целом), свойство Кодировка пустое. По умолчанию для отправляемых сообщений используется кодировка utf-8.

Ниже перечислены допустимые кодировки (указывать кодировку нужно строго в том виде, в котором она представлена):

ИнтернетПочтовоеСообщение

Через свойство Кодировка данного объекта можно указать кодировку темы и всего сообщения. В случае если кодировка не указана, используется кодировка по умолчанию. Например:

Копировать в буфер обмена
    Почта = Новый ИнтернетПочта;
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераSMTP = "smtp.foobar.org";
    Почта.Подключиться(Профиль);

    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Кодировка = "windows-1251";
    Сообщение.Тема = "Поздравление...";
    
    Почта.Послать(Сообщение);
    Почта.Отключиться();
    

Тема сообщения отправится в кодировке "windows-1251".

ИнтернетПочтовыйАдрес

Через свойство Кодировка данного объекта можно указать кодировку для свойства ОтображаемоеИмя. Если свойство Кодировка не установлено, то кодировка будет браться из объекта ИнтернетПочтовоеСообщение. Если же свойство Кодировка объекта ИнтернетПочтовоеСообщение также не установлено, будет использоваться кодировка по умолчанию. Например:

Копировать в буфер обмена
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Кодировка = "windows-1251";
    
    Адрес = Сообщение.Получатели.Добавить("postmaster@foobar.org");
    Адрес.ОтображаемоеИмя = "Светлана";
    Адрес.Кодировка = "koi8-r";

    Адрес2 = Сообщение.Получатели.Добавить("user@foobar.org");
    Адрес2.ОтображаемоеИмя = "Игорь";
Отображаемое имя адресата "postmaster@foobar.org" будет послано в кодировке "koi8-r", а "user@foobar.org" в кодировке "windows-1251".

ИнтернетПочтовоеВложение

Через свойство Кодировка данного объекта можно указать кодировку имени вложения, а также имени файла вложения. Если свойство Кодировка не установлено, то кодировка будет браться из объекта ИнтернетПочтовоеСообщение. Если же свойство Кодировка объекта ИнтернетПочтовоеСообщение также не установлено, будет использоваться кодировка по умолчанию. Например:

Копировать в буфер обмена
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Вложение = Сообщение.Вложения.Добавить("c:\Мои рисунки\Поздравление.bmp", "Поздравляю с 8 марта!");
    Вложение.Кодировка = "koi8-u";

Как и имя файла вложения, так и имя вложения отправятся в кодировке "koi8-u".

ИнтернетПочтовыйТекст

Через свойство Кодировка данного объекта можно указать кодировку для свойства ОтображаемоеИмя. Если свойство Кодировка не установлено, то кодировка будет браться из объекта ИнтернетПочтовоеСообщение. Если же свойство Кодировка объекта ИнтернетПочтовоеСообщение также не установлено, будет использоваться кодировка по умолчанию. Например:

Копировать в буфер обмена
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Текст = Сообщение.Тексты.Добавить("Поздравляю с праздником!", ТипТекстаПочтовогоСообщения.HTML);
    Текст.Кодировка = "koi8-r";

Текст сообщения отправится в кодировке "koi8-r".

Пример

Следующий пример иллюстрирует использование кодировок в различных частях почтового сообщения:

Копировать в буфер обмена
    Почта = Новый ИнтернетПочта;
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    Профиль.АдресСервераSMTP = "smtp.foobar.org";
    Почта.Подключиться(Профиль);
    
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Кодировка = "windows-1251";
    Сообщение.Тема = "Поздравление...";
    
    Адрес = Сообщение.Получатели.Добавить("postmaster@foobar.org");
    Адрес.ОтображаемоеИмя = "Светлана";
    Адрес.Кодировка = "koi8-r";

    Адрес2 = Сообщение.Получатели.Добавить("user@foobar.org");
    Адрес2.ОтображаемоеИмя = "Нина";    
    
    Вложение = Сообщение.Вложения.Добавить("c:\Мои рисунки\Поздравление.bmp", "Поздравляю с 8 марта!");
    Вложение.Кодировка = "koi8-r";  
    
    Текст = Сообщение.Тексты.Добавить("Поздравляю с праздником!", ТипТекстаПочтовогоСообщения.HTML);
    Текст.Кодировка = "koi8-r";
    
    Почта.Послать(Сообщение);
    Почта.Отключиться();