Отправка писем из 1С

Просмотров:
Отправка писем из 1С

Стремясь к снижению влияния человеческого фактора на нашу операционную деятельность, я всегда задаюсь целью автоматизировать как можно больше действий, которые менеджеры делают вручную.
Сегодня я хотел бы с Вами поделиться опытом настройки рассылки писем различного характера из 1С.
Самыми ценными для нас стали рассылки:
— прайс-листов
— актов сверки
— счетов и накладных
— информации о задолженностях

Все рассылки работают либо по расписанию, либо по нажатию одной кнопки.
Данная возможность колоссально экономит время менеджеров, позволяя заниматься более приоритетными задачами.

Итак, пишем…

Процедура ОтправитьПисьмо(Кнопка)	
	//Первым делом нам необходимо создать новый профиль подключения к серверу.
	ПрофильПодключения = Новый ИнтернетПочтовыйПрофиль;
 
	//Так как мы будем отправлять письма, нам будет необходим только SMTP адрес 
	//нашего почтового сервера. Для примера, возьмем Яндекс.
	ПрофильПодключения.АдресСервераSMTP ="smtp.yandex.ru";
 
	//Сервер Яндекса требует обязательного SSL шифрования.
	ПрофильПодключения.ИспользоватьSSLSMTP=Истина;
 
	//Так как мы подключаемся через SSL, указываем порт 465. Если подключение
	//не защищенное, то используем порт 25
	ПрофильПодключения.ПортSMTP = 465;
 
	//Прописываем пользователя от имени которого будет осуществляться подключение 
	//к почтовому серверу и его пароль	
	ПрофильПодключения.ПользовательSMTP = "RandomEmail@yandex.ru";
	ПрофильПодключения.ПарольSMTP ="12345678";
 
	//Создаем объект ИнтернетПочта
	Почта = Новый ИнтернетПочта;
 
	//Пытаемся подключится к серверу используя наши настройки.
	Попытка
		Почта.Подключиться(ПрофильПодключения);
	Исключение
		Сообщить("Не удалось подключиться к серверу smtp.yandex.ru");
		Сообщить(ОписаниеОшибки());
	КонецПопытки;
 
	//Определяемся с текстом письма
	Тело="Добрый день!
	|Вас приветствует компания ""Ромашка""
	|Будем рады видеть Вас в числе наших клиентов!     
	|";
 
	//Создаем сообщение
	Письмо = Новый ИнтернетПочтовоеСообщение;
 
	//Добавляем наш текст в письмо
	Письмо.Тексты.Добавить(Тело);
 
	//Добавляем тему
	Письмо.Тема = "У нас есть товар для Вас!";
 
	//Добавляем ту же почту, через которую подключаемся к серверу
	//Для таких серверов, как Яндекс, Мейл, Гугл эти почты должны обязательно совпадать
	//Однако, имея свой почтовый сервер для домена, можно использовать любую другую почту 
	//с вашим доменом для отправки (по крайней мере, у нас так работает).
	Письмо.Отправитель = "RandomEmail@yandex.ru";
 
	//Добавляем имя отправителя
	Письмо.ИмяОтправителя = "Отдел впаривания товаров";
 
	//Добавляем получателя
	Письмо.Получатели.Добавить("RandomEmail1@yandex.ru");
 
	//Для массовых рассылок можно использовать СлепыеКопии, что бы получатели не видели, 
	//кому еще отправлялось это письмо.
	Письмо.СлепыеКопии.Добавить("RandomEmail2@yandex.ru");
 
	//Теперь пытаемся отправить письмо
    Попытка
		Почта.Послать(Письмо);
    Исключение
        Сообщить("Не удалось отправить письмо ");
        Сообщить(ОписаниеОшибки());
	КонецПопытки;	
 
	//Обязательно отключаемся от почтового сервера по завершении отправки письма.	
	Почта.Отключиться();
 
КонецПроцедуры;

Вот примерно так выглядит код обработки для самых простых рассылок из 1С.
Надеюсь Вам была полезна данная статья, буду очень рад, если хоть немного Вам помог!

Администратор

19 комментариев к “Отправка писем из 1С

  1. Копируем его весь, не парьтесь вы же ни верстальщик и ни дизайнер, по этому просто пока бездумно всё забираем (но конечно можете блеснуть знанием HTML и сверстать так как вам угодно, но мне это не интересно пока), вставляем в нашу свежеиспеченную обработку и конвертируем 😉

  2. Добрый день!
    Подскажите пожалуйста, а куда надо код скопировать. Подскажите пожалуйста поэтапно(((

    1. Добрый день!
      По идее этот код вставляется как процедура в модуль формы.
      А к какой либо кнопке привязывается его выполнение.
      Если интересно, могу в ближайшее время выложить обработку с этой процедурой, где можно будет испытать этот код в действии.

  3. У меня УТ 10.3 (33.1) вставил эту процедуру в обработку формирования отчета.
    В ответ — тишина. Хотя и ошибок нет. Ну и настройки все соблюдены норм.
    Не понял, почему не работает…

    1. Странно… даже в служебных сообщениях тишина?
      Может процедура к кнопке не привязана?

  4. Добрый день! Код работает! Спасибо! Однако когда смотрю исходящие письма почтового ящика от имени которого отправил письмо, то не вижу это отправленное письмо! То есть 1С отправляет письмо, а на вкладке «отправленные» этого ящика — нет этого письма. Ящик отправителя у меня на mail.ru . Скажите это правильно ? Именно так работает отправка почты через 1с? То есть надо ещё и самому себе отправлять копию?

    1. Добрый день! Вы правы, при работе через сервер SMTP у mail.ru и yandex.ru письма в папке «отправленные» не появляются.
      На сколько мне известно, эта проблема решена у gmail. Там вроде как они появляются.
      А решение вопроса, как вы и предложили — отправка копии самому себе.

      //Отправить копию письма на почту
      Письмо.СлепыеКопии.Добавить(«my-email@mail.ru»);

  5. Добрый день у меня почему то пишет ошибку
    {ВнешняяОбработка.ОповещениеРуководителяОКрупныхЗаказах.МодульОбъекта(3,2)}: Ожидается ключевое слово ‘КонецПроцедуры’ (‘EndProcedure’)
    <>Процедура ОтправитьПисьмо(Кнопка) (Проверка: Сервер)
    {ВнешняяОбработка.ОповещениеРуководителяОКрупныхЗаказах.МодульОбъекта(75,16)}: Обнаружено логическое завершение исходного текста модуля
    КонецПроцедуры<> (Проверка: Сервер)
    Не подскажете в чем проблема?

    1. Добрый день! Как правило такая ошибка выскакивает, если в предыдущей процедуре или функции стоит точка с запятой после КонецФункции / КонецПроцедуры.

  6. Седня приляпал обработку:
    Не удалось отправить письмо
    {ОбщаяФорма.ФормаПечати.Форма(205)}: Ошибка при вызове метода контекста (Послать): Неизвестная ошибка (SMTP error code 503 5.5.4 Error: send AUTH command first.
    )

    1. Добрый день!
      Попробуйте добавить строку в настройках профиля подключения:
      ПрофильПодключения.АутентификацияSMTP=СпособSMTPАутентификации.Login;

  7. Добрый день. Я написал данную процедуру в кнопке на форме документа, всё работает отлично. Но мне нужно чтобы на почту отправлялся текущий документ, а не простой текст в письме. Подскажите пожалуйста как это сделать, заранее благодарю!

    1. Добрый день!
      Вложения в письмо можно добавлять с помощью такого кода:
      Письмо.Вложения.Добавить(«C:\НовыйТекстовыйДокумент.txt»); //в скобках пишем полный путь документа
      Если необходимо несколько вложений, то вставляем данный код необходимое количество раз, так как Письмо.Вложения что то типа массива, если выражаться простым языком, и в него можно добавлять несколько документов.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *