Электронная почта

Электронная почта это механизм отправки и получения электронных сообщений между пользователями компьютерной сети. Электронное сообщение, с которым работает электронная почта, имеет несколько синонимов, каждый из которых может употребляться с равной вероятностью: письмо, электронное письмо, сообщение электронной почты. Как и в реальной жизни, каждое письмо может быть отправлено одному или нескольким адресатам. В качестве однозначного идентификатора адресата выступает адрес электронной почты, который, обычно, имеет следующий вид имя_пользователя@имя_домена. Подробное описание формата адреса электронной почты приведено в стандарте RFC 5322.

Для того, чтобы отправить почту, предназначен тип КлиентSmtp. Экземпляр этого типа может быть получен из свойства глобального контекста КлиентSmtp. С помощью него предоставляется возможность отправлять электронную почту используя протокол SMTP. При подключении к серверу электронной почты, поддерживаются следующие виды аутентификации:
  • Анонимная аутентификация. Описывается стандартом RFC 4505.
  • Простой уровень аутентификации (SASL). Описывается стандартом RFC 4422.
  • Аутентификация вида запрос-ответ (CRAM-MD5). Описывается стандартом RFC 2195.
Схема работы выглядит следующим образом:
  1. Создается сообщение электронной почты. Для этого используется экземпляр типа ИсходящееПисьмо.
  2. Для сообщения электронной почты задаются различные получатели сообщения (получатели, получатели копии, скрытые получатели, отправитель и т.д.). Для этого используется экземпляр типа АдресПочты и соответствующие инструменты экземпляра для работы с сообщением электронной почты.
  3. Устанавливаются прочие параметры создаваемого почтового сообщения: тема, содержимое и прочие параметры.
  4. Перед отправкой электронной почты необходимо указать параметры подключения к серверу электронной почты с помощью экземпляра типа ПараметрыПодключенияSmtp.
  5. С помощью метода КлиентSmtp.Отправить() выполняется отправка одного или нескольких сообщений электронной почты. Этот метод возвращает массив экземпляров типа РезультатОтправкиПочты. С его помощью можно получить состояние отправки сообщений.

Тип АдресПочты предназначен для указания не только собственно адреса электронной почты, но и представления этого адреса.

Вложения

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

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

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

Сам тип ВложениеПисьма имеет свойства, описывающие вложение: Ид (Ууид), Название (Строка), Данные (Байты) — собственно сами данные вложения и ТипСодержимого (Строка) — 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.Отправить(ПараметрыПодключения, Сообщение)
;