Cпособы отправки письма из 1С

Итак, рассмотрю способы отправки письма из 1С. На самом деле навелосипедить можно и больше, но мне хватит 😉

1) На «прямую», без использования БСП:

	Профиль = Новый ИнтернетПочтовыйПрофиль;
	Профиль.АдресСервераSMTP = "цукацукацука";
	Профиль.ПортSMTP = 465;
	
	Профиль.POP3ПередSMTP = ложь;
	Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
	
	Профиль.ИспользоватьSSLSMTP = ложь;
	
	Профиль.ТолькоЗащищеннаяАутентификацияSMTP = ложь;
	
	Профиль.Пользователь = "vуцкацука1-Noreply@укацукацука.ru";
	Профиль.Пароль = "Hцукацукаg";
	Профиль.ПользовательSMTP = "vцукауцкаly@цукацука.ru";
	Профиль.ПарольSMTP = "укацукацу";
	
	//Профиль.Таймаут = 60;
	
	Почта = Новый ИнтернетПочта;
	                                 
	Сообщить("Проверка cоединения..");
	Попытка
		Почта.Подключиться(Профиль, ПротоколИнтернетПочты.POP3);
		Сообщить("POP3: соединение ОК");
		Сообщить("SMTP: соединение ОК");
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
	
	
	Попытка
		Почта.Подключиться(Профиль);
		
		Письмо = Новый ИнтернетПочтовоеСообщение;
		Письмо.Тема = Заголовок;
	
		// формируем адрес получателя	
		Получатель = Письмо.Получатели.Добавить(Кому);
		Получатель.ОтображаемоеИмя = Кому;
	
		// добавляем к письму имя отправителя
		Письмо.ИмяОтправителя              = "Сцукауцкания";
		Письмо.Отправитель.ОтображаемоеИмя = "Сцукаувцукацукания";
		сообщить(константы.СК_Почта_Отправитель.Получить());
		Письмо.Отправитель.Адрес           = "noreply@цукаука.ru";
	
		// добавляем текст
		Текст = Письмо.Тексты.Добавить(Тело);
		Текст.ТипТекста = ТипТекстаПочтовогоСообщения.ПростойТекст;
		
		Почта.Послать(Письмо, , ПротоколИнтернетПочты.SMTP);
		
		Сообщить("SMTP: посылка ОК");
		
	Исключение
		Сообщить(ОписаниеОшибки());
	КонецПопытки;

2) Используя БСП «Свежих» версий. Не могу сказать точно с какой версий, года примерно с двадцатого:

    УчетнаяЗаписьПочты = РаботаСПочтовымиСообщениями.СистемнаяУчетнаяЗапись(); 
 
	попытка                                                                                  
	ПараметрыСообщения = Новый Структура;
	ПараметрыСообщения.Вставить("Кому",     Кому);
	ПараметрыСообщения.Вставить("Тема",     Заголовок);
	ПараметрыСообщения.Вставить("Тело",     Тело);

		Письмо = РаботаСПочтовымиСообщениями.ПодготовитьПисьмо(УчетнаяЗаписьПочты, ПараметрыСообщения);
		РаботаСПочтовымиСообщениями.ОтправитьПисьмо(УчетнаяЗаписьПочты, Письмо);		
	исключение
		сообщить("ой!");
		Сообщить(ОписаниеОшибки());
	конецпопытки;

3) Используя БСП «старых версий»… Очень старых… Где-то года 2015 и ранее:

УчетнаяЗаписьПочты = РаботаСПочтовымиСообщениями.ПолучитьСистемнуюУчетнуюЗапись();
ПараметрыПисьма = Новый Структура("Кому, Тема, Тело,ТипТекста", email, "цуацукау", тело,"HTML");
		РаботаСПочтовымиСообщениями.ОтправитьСообщение(УчетнаяЗаписьПочты, ПараметрыПисьма);

1C: прикрепление файла к документу в разных версиях БСП

БСП < 2.0:

АдресФайлаВХранилище = ПоместитьВоВременноеХранилище(Base64Значение(body.file_base64));
		РаботаСФайламиВызовСервера.СоздатьФайлСВерсией(
			док.Ссылка,
			"результат",
			"pdf",
			ТекущаяДата(),
			ТекущаяДата(),
			,
			АдресФайлаВХранилище,АдресФайлаВХранилище,
			Ложь,
			,
			,
			Истина);		

БСП 2..3:

 // Добавляем его в присоединенные файлы к договору.
    ДвоичныеДанныеФайла = Новый ДвоичныеДанные(ИмяФайла);
    АдресВХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанныеФайла);
    НаименованиеФайла = НачалоНаименованияФайла + " " + ДоговорСсылка.Номер + " от " + Формат(ДоговорСсылка.Дата, "ДЛФ=D");
    //ПрисоединенныйФайлСсылка = ПрисоединенныеФайлы.ДобавитьФайл(ДоговорСсылка, НаименованиеФайла, РасширениеБезТочки, , , АдресВХранилище,,,, НаименованиеФайла + " (Сф-но автомат-ки)");

    ИмяФайлаПриведенное = ОбщегоНазначенияКлиентСервер.ЗаменитьНедопустимыеСимволыВИмениФайла(НаименованиеФайла, "_"); // ЕМ 2015_10_20
    ПрисоединенныйФайлСсылка = ПрисоединенныеФайлы.ДобавитьФайл(ДоговорСсылка, ИмяФайлаПриведенное, РасширениеБезТочки, , , АдресВХранилище,,,, НаименованиеФайла + " (Сф-но автомат-ки)");

Современные версии

ИмяФайлаНаДиске = "C:\Users\v.burmistrov\Downloads\ффд12.pdf";	
ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайлаНаДиске);
ВременноеХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
// Подготоваливаем описание файла заполнив все необходимые параметры
ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
ПараметрыФайла.Автор = Пользователи.ТекущийПользователь();
ПараметрыФайла.ВладелецФайлов = ДокументСсылка;
ПараметрыФайла.ИмяБезРасширения = СтрЗаменить(ИмяФайлаНаДиске,".pdf","");
ПараметрыФайла.РасширениеБезТочки = "pdf";
// Используем функцию БСП и добавляем файл к объекту
РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, ВременноеХранилище);

1C: Программное прикрепление файла к документу / справочнику

Работает только на БСП 3.1 и выше

    Текст=новый ЗаписьТекста;
    Текст.Открыть(КаталогВременныхФайлов()+"\1.txt",КодировкаТекста.ANSI);
    Текст.ЗаписатьСтроку("Программируем в 1С 8.2");
    Текст.Закрыть(); 
	  
	ИмяФайлаНаДиске = КаталогВременныхФайлов()+"\1.txt";	
	ДвоичныеДанные = Новый ДвоичныеДанные(ИмяФайлаНаДиске);
	ВременноеХранилище = ПоместитьВоВременноеХранилище(ДвоичныеДанные);
	// Подготоваливаем описание файла заполнив все необходимые параметры
	ПараметрыФайла = РаботаСФайлами.ПараметрыДобавленияФайла();
	ПараметрыФайла.Автор = Пользователи.ТекущийПользователь();
	ПараметрыФайла.ВладелецФайлов = док.Ссылка;
	ПараметрыФайла.ИмяБезРасширения = СтрЗаменить(ИмяФайлаНаДиске,".txt","");
	ПараметрыФайла.РасширениеБезТочки = "txt";
	// Используем функцию БСП и добавляем файл к объекту
	РаботаСФайлами.ДобавитьФайл(ПараметрыФайла, ВременноеХранилище);