Отправка письма средствами 1С без использования дополнительных компонент (код проверен на работоспособность):
Функция ОтправитьПисьмоЧерезMailgun()
Boundary = СтрЗаменить(Строка(Новый УникальныйИдентификатор()), "-", "");
ФайлДанных = Новый Файл(ИмяФайлаДанных);
ТелоСообщения = "--" + Boundary + "
|Content-Disposition: form-data; name=""from""" + "
|
|" + Отправитель + "
|--" + Boundary + "
|Content-Disposition: form-data; name=""to""" + "
|
|" + ПолучательАдрес + "
|--" + Boundary + "
|Content-Disposition: form-data; name=""subject""" + "
|
|" + ТемаПисьма + "
|--" + Boundary + "
|Content-Disposition: form-data; name=""text""" + "
|
|" + ТекстПисьма + "
|--" + Boundary + "
|Content-Disposition: form-data; name=""attachment""; filename=""" + ФайлДанных.Имя + """
|Content-Type: application/" + Сред(ФайлДанных.Расширение, 2) + "
|Content-Transfer-Encoding: base64
|
|" + Base64Строка(Новый ДвоичныеДанные(ИмяФайлаДанных)) + "
|--" + Boundary + "--";
// Обойдёмся без временных файлов!
ПотокДанных = Новый ПотокВПамяти;
ЗаписьДанных = Новый ЗаписьДанных(ПотокДанных);
ЗаписьДанных.ЗаписатьСтроку(ТелоСообщения);
ЗаписьДанных.Закрыть();
ДанныеДляОтправки = ПотокДанных.ЗакрытьИПолучитьДвоичныеДанные();
Заголовки = Новый Соответствие;
Заголовки.Вставить("Content-Type", "multipart/form-data; boundary="+Boundary);
Заголовки.Вставить("Content-Length", XMLСтрока(ДанныеДляОтправки.Размер()));
Запрос = Новый HTTPЗапрос("/v3/" + Домен + "/messages", Заголовки);
Запрос.УстановитьТелоИзДвоичныхДанных(ДанныеДляОтправки);
Соединение = Новый HTTPСоединение("api.mailgun.net",, "api", Пароль,,, Новый ЗащищенноеСоединениеOpenSSL);
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Сообщить("Ответ сервера: (" + Ответ.КодСостояния + ") " + Ответ.ПолучитьТелоКакСтроку());
КонецФункции
Показать