Работа с вложениями

Почтовое вложение — это экземпляр типа ВложениеПисьма, который обладает собственным набором характеристик. Письмо может содержать как одно, так и несколько вложений, а также не содержать вложений вообще. Тип ВложениеПисьма является общим как для исходящего, так и входящего сообщения.

Для того чтобы работать с вложениями, у типа Письмо существует несколько методов:
  • ПриложитьФайл() — добавляет файл во вложение. В параметре вы можете передать путь к файлу (Строка) или сам файл (Файл),
  • ПриложитьДанные() — в качестве источника данных можно указать экземпляры типов Строка, ПотокЧтения или Байты,
  • УдалитьВложение() — удаляет существующее вложение. В параметре нужно передать идентификатор (Ууид) вложения.

Для хранения вложений используется свойство Письмо.Вложения. Это массив экземпляров типа ВложениеПисьма.

Сам тип ВложениеПисьма имеет свойства, описывающие вложение: Ид (тип Строка), Название (тип Строка), Данные (тип Байты) — собственно сами данные вложения и ТипСодержимого (Строка) — MIME-тип вложения, который соответствует заголовку «Content-Type».

При добавлении вложения обязательной частью вложения являются его данные. Остальные свойства вы можете указывать по желанию.

При добавлении вложения в исходящее сообщение Ид вложения будет сгенерирован автоматически.

При загрузке данных (ПриложитьДанные() типов Байты или ПотокЧтения), если вы не задали название вложения, в качестве названия будет использовано значение по умолчанию — «Attachment». Если таких файлов будет несколько, это является допустимым.

При загрузке файла (ПриложитьФайл()) будет выполнена попытка получить все незаполненные свойства из свойств файла (название, тип содержимого).

ВложениеПисьма не имеет конструктора. Экземпляр типа ВложениеПисьма нужен для присоединения к исходящему сообщению или для описания вложения во входящем сообщении. Таким образом, его использование неотделимо от экземпляра сообщения электронной почты, и нет необходимости в отдельных конструкторах ВложениеПисьма. Для создания вложения вы можете использовать методы Письмо.ПриложитьФайл() и Письмо.ПриложитьДанные().

Пример добавления файла в исходящее письмо:
// Пример 1. Приложить файл к письму
метод ПриложитьФайлКПисьму()
    // 1. Подготовить письмо
    пер Сообщение = Письмо("sender@1c.ru")
    Сообщение.ДобавитьПолучателей("recipient@1c.ru")
    Сообщение.Тема = "Тема сообщения электронной почты"
    Сообщение.УстановитьТекстКакСтроку("Текст сообщения электронной почты")
     
    // 2. Добавить вложения
    Сообщение.ПриложитьФайл("C:\Documents\Doc1.docx", "Приложение к письму.docx")
    Сообщение.ПриложитьФайл("C:\Documents\Вложение.xlsx")
 
    // 3. Отправить письмо
    пер ПараметрыПодключения = ПолучитьПараметрыПодключенияSmtp()
    КлиентSmtp.Отправить(ПараметрыПодключения, Сообщение)
;
 
// Пример 2. Добавить файл во вложения
метод ДобавитьФайлВоВложение()
    // 1. Подготовить письмо
    пер Сообщение = Письмо("sender@1c.ru")
    Сообщение.ДобавитьПолучателей("recipient@1c.ru")
    Сообщение.Тема = "Тема сообщения электронной почты"
    Сообщение.УстановитьТекстКакСтроку("Текст сообщения электронной почты")
 
    // 2. Добавить вложение
    пер ФайлДляОтправки = новый Файл("C:\Documents\Doc1.pdf")
    Сообщение.ПриложитьДанные(ФайлДляОтправки.ОткрытьПотокЧтения(), "Приложение к письму.pdf", "application/pdf")
 
    // 3. Отправить письмо
    пер ПараметрыПодключения = ПолучитьПараметрыПодключенияSmtp()
    КлиентSmtp.Отправить(ПараметрыПодключения, Сообщение)
;
Пример встроенного в текст вложения:
метод ЗаполнитьПисьмоДиректору(): Письмо
    пер Письмо = ШаблонПисьмаДиректору()
    Письмо.УстановитьТекстКакСтроку(ПолучитьТекст(), ВидТекстаПисьма.Html)
    // Картинка будет отображаться в тексте письма.
    Письмо.ПриложитьФайл(Файл = "img.png",
        Название = "my_image.png",
        ТипСодержимого = "image/png",
        Ид = "my_image.png",
        ВстроенноеВТекст = Истина)
    возврат Письмо
;
    
метод ПолучитьТекст(): String
    return "<div><img border=\"0\" hspace=\"0\" alt=\"\" align=\"baseline\" apple-inline=\"yes\"" +
    "id=\"my_image.png\" height=\"836\" width=\"643\" apple-width=\"yes\"" +
     "apple-height=\"yes\" style=\"display:block\" src=\"cid:my_image.png\"></div>"
;

метод ОтправитьПисьмоДиректору()
    пер Сообщение = ЗаполнитьПисьмоДиректору()
    пер ПараметрыПодключения = ПолучитьПараметрыПодключенияSmtp()
    КлиентSmtp.Отправить(ПараметрыПодключения, Сообщение)
;