mail Alt ←

Статический метод :send

Отправка сообщения по электронной почте.

^mail:send[сообщение]

Метод отправляет сообщение на заданный адрес электронной почты. Можно указать несколько адресов через запятую.

Пример

^mail:send[
	$.from[Вася <vasya@hotmail.ru>]
	$.to[Петя <petya@hotmail.ru>]
	$.subject[как дела]
	$.text[Как у тебя дела? У меня — изумительно!]
]

В результате будет отправлено сообщение для petya@hotmail.ru с содержимым «Как у тебя дела? У меня — изумительно!»

сообщение — хеш, в котором могут быть заданы такие ключи:

  • поле_заголовка
  • text
  • html
  • file
  • charset
  • options
  • print-debug [3.4.0]

charset — если задан этот ключ, то заголовок и текстовые блоки сообщения будут перекодированы в указанную кодировку. По умолчанию сообщение отправляется в кодировке, заданной в $request:charset (т. е. не перекодируется).

Пример

$.charset[koi8-r]

options — эти опции будут переданы в командную строку программе sendmail (только под UNIX).

print-debug — при указании этой опции письмо не будет отправлено, вместо этого будет выведен полный сформированный текст письма, что может быть удобно при отладке сложных HTML-писем.

Также можно задать все поля заголовка сообщения, передав их значение в таком виде (короткая форма):

$.поле_заголовка[строка]

или с параметрами (полная форма):

$.поле_заголовка[
	$.value[строка]
	$.параметр[строка]
]

Примеры

$.from[Вася <vasya@hotmail.ru>]
$.to[Петя <petya@hotmail.ru>]
$.subject[Как у тебя дела? У меня — изумительно!]
$.x-mailer[Parser 3]

Кроме заголовка, можно передать один или оба текстовых блока: text, html, а также любое количество блоков file и message (см. ниже). Если будут переданы оба текстовых блока, будет сформирована секция MULTIPART/ALTERNATIVE, при прочтении полученного сообщения современные почтовые клиенты покажут HTML, а устаревшие — простой текст.

Короткая форма:

$.text[строка]

Полная форма:

$.text[
	$.value[строка]
	$.поле_заголовка[значение]
]

…где value — значение тестового блока, предусмотрена возможность задать все поля заголовка сообщения, передав их в хеше, как у сообщение (см. выше).

Можно не передавать заголовок content-type, он будет сформирован автоматически. Этот заголовок не влияет на перекодирование, а влияет только на ту кодировку, в которой почтовый клиент будет отображать сообщение.

Отправка HTML. Короткая форма:

$.html{строка}

Полная форма:

$.html[
	$.value{строка}
	$.поле_заголовка[значение]
]

Фигурные скобки нужны для переключения вида преобразования по умолчанию на HTML.

Вложение файла. Короткая форма:

$.file[файл]

Полная форма:

$.file[
	$.value[файл]
	$.name[имя_файла]
	$.content-id[XYZ]
	$.format[uue|base64]
	$.поле_заголовка[значение]
]

Файл — объект класса file, который будет прикреплен к сообщению. MIME-тип данных (content-type заголовок части) определяется по таблице MIME-TYPES (см. Конфигурационный метод).

Имя_файла — имя, под которым файл будет передан.

По умолчанию файл будет передан в формате uuencode (uue) до версии 3.4.0 и в формате base64, начиная с версии 3.4.0.

Вложение сообщения:

$.message[сообщение]

Формат сообщения такой же, как у параметра всего метода.

Вложений может быть несколько, для чего после имени следует добавить целое число. Пример:

$.file
$.file2
$.message
$.message2

Пример с альтернативными блоками и вложениями:

^mail:send[
	$.from[Вася <vasya@hotmail.ru>]
	$.to[Петя <petya@hotmail.ru>]
	$.subject[как дела]
	$.text[Как у тебя дела? У меня изумительно!]
	$.html{
		Как у тебя дела? У меня <b>изумительно</b>!<br>
		<img src="cid:pic2" width="100" height="50">
	}
	$.file[^file::load[binary;perfect_life1.jpg]]
	$.file2[
		$.value[^file::load[binary;perfect_life2.jpg]]
		$.name[изумительная_жизнь2.jpg]
		$.content-id[pic2]
	]
]

В результате будет отправлено сообщение для petya@hotmail.ru с содержимым «Как у тебя дела? У меня — изумительно!» в простом тексте и HTML. Сообщение будет содержать два изображения: perfect_life1.jpg — в виде аттачмента и perfect_life2.jpg — в теле письма.