Отправка почты через сервис mailgun.com (с прикреплением файлов)

Обмен - Email рассылки

Обработка показывает, как можно слать письма с вложениями через API Mailgun.com.

На сайте есть обработка, которая также позволяет слать письма, но без вложений.

Обработка позволяет отсылать письма с вложениями через API Mailgun.com. Тестировалась на пустой базе на платформе 1С 8.3.

Обработка сделана через внешнюю .dll WinHttp и использует при передаче составной тип содержимого в Http запросе Content-type: multipart/form-data. (подробнее, как работает этот механизм, можно прочитать в википедии https://ru.wikipedia.org/wiki/Multipart/form-data)

Предупрежу вопросы, через 1С-совский метод HTTPсоединение сделать не удалось. По каким-то причинам не хочет воспринимать тип содержимого multipart/form-data.

Надеюсь, кому-нибудь поможет.

Скачать файлы

Наименование Файл Версия Размер
Отправка почты через сервис mailgun.com (с прикреплением файлов):
.epf 7,74Kb
22.09.17
2
.epf 7,74Kb 2 Скачать

См. также

Комментарии
1. Павел Толкачев (ltfriend) 238 22.09.17 15:07 Сейчас в теме
Отправка письма средствами 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);
	Ответ = Соединение.ОтправитьДляОбработки(Запрос);
	
	Сообщить("Ответ сервера: (" + Ответ.КодСостояния + ") " + Ответ.ПолучитьТелоКакСтроку());
	
КонецФункции
Показать
shalimski; mc_bublik_90@mail.ru; bashinsky; +3 Ответить
2. Дмитрий Неважно (mc_bublik_90@mail.ru) 24.09.17 15:06 Сейчас в теме
Спасибо за механизм записи данных в поток, очень полезно, буду теперь знать как делать :)
Оставьте свое сообщение