1C 7.7 Отправка почты с помощью CDO

Рубрика: 1С 7.7

Сегодня у одних моих клиентов перестала работать отправка почты через mail.ru. Рассылка была настроена самописной внешней обработкой с использованием компоненты CDO.Configuration.

Надо сказать, что Mail.ru и Yandex.ru совсем недавно поменяли настройки своих серверов исходящей почты, из-за чего все это и случилось.

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

На форумах, не смотря на многочисленные посты, внятных ответов было не много.  Для пробы, попробовал настроить почту через Яндекс - получилось с первого раза. А вот при отправке через Mail.ru выходила ошибки:

CDO.Message.1: Транспорту не удалось подключиться к серверу

и

Не удалось отправить сообщение на SMTP-сервер. Код ошибки транспорта: 0x80040217. Отклик сервера: not available

Честно говоря, даже не понял, в чем была моя ошибка, поскольку код для них в результате оказался идентичен. Приведу пример рабочего кода для обоих этих сервисов.

Яндекс:

Процедура ОтправитьПисьмо()

iConf = CreateObject("CDO.Configuration");

iMsg = CreateObject("CDO.Message");

iMsg.Configuration = iConf;

iMsg.From          = "Программист 1C"""" ";

iMsg.To            = "poluchatel@mail.ru";

iMsg.Subject       = "Тема письма";

iMsg.textBody      = "Тело письма";

iMsg.BodyPart.Charset = "windows-1251";

iMsg.AddAttachment("D:\1.txt");

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").            Value = 2;

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").           Value = "smtp.yandex.ru";

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").       Value = "465";

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").     Value = 1;

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").         Value = "otpravitel@yandex.ru";

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").         Value = "пароль";

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").           Value = 1;

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout").Value = 60;

iConf.Fields.Update();

Попытка

iMsg.Send();

Сообщить("Письмо отправлено.");

Исключение

Сообщить("Письмо не отправлено. Ошибка : "+Ошибка = ОписаниеОшибки(); ,"!");

КонецПопытки;

КонецПроцедуры

Mail.ru

Процедура ОтправитьПисьмо()

iConf = CreateObject("CDO.Configuration");

iMsg = CreateObject("CDO.Message");

iMsg.Configuration = iConf;

iMsg.From          = "Программист 1C"""" ";

iMsg.To            = "antmagn@mail.ru";

iMsg.Subject       = "Тема письма";

iMsg.textBody      = "Тело письма";

iMsg.BodyPart.Charset = "windows-1251";

iMsg.AddAttachment("D:\1.txt");

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").            Value = 2;

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").           Value = "smtp.mail.ru";

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").       Value = "465";

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").     Value = 1;

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").         Value = "otpravitel@list.ru";

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").         Value = "пароль";

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").           Value = 1;

iConf.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout").Value = 60;

iConf.Fields.Update();

Попытка

iMsg.Send();

Сообщить("Письмо отправлено.");

Исключение

Сообщить("Письмо не отправлено. Ошибка: "+ОписаниеОшибки(),"!");

КонецПопытки;

КонецПроцедуры

9 комментариев к “1C 7.7 Отправка почты с помощью CDO”

  • 28 октября, 2014, 20:07

    Не сталкивалась с подобными проблемами. Но у меня есть знакомый, у него была статья на эту тему seo-it-in.ru/optimizatsiya-sajta/kak-podklyuchit-pochtu-dlya-svoego-domena-na-yandeks
    Один раз этот человек помог мне разобраться с серьезным вопросом. Может, будет полезен и Вам? 

  • 29 октября, 2014, 18:09

    Спасибо, Надежда. Буду иметь ввиду.

  • 19 июля, 2015, 17:23

    Как раз искал возможность проверить различные способы отправки письма с сервера, так как встроенный почтовый клиент не хочет работать.

  • Дмитрий
    29 апреля, 2016, 10:14

    Работает, но если используется прокси-сервер не отправляет. Добавление 
    iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/urlproxyserver»).Value = «proxy:3128»;
    iConf.Fields.Item(«http://schemas.microsoft.com/cdo/configuration/urlproxybypass»).Value =  «»;
    также не помогло «Транспорту не удалось подключиться к серверу»

  • 28 мая, 2016, 1:54

    Дмитрий, спасибо за добавление! Сам я через прокси не тестировал.

  • Александр
    11 мая, 2019, 16:56

    Андрей, вы гений.
    Два дня бился, чтобы хоть что-то, хоть как-то отправить из 1с (7.7).
    Перерыл весь инет. Перепробовал все, что можно. Ничего не получалось.
    Случайно зашел сюда, скопировал ваш текст и все заработало!
    Огромное вам спасибо!!!

  • 12 мая, 2019, 19:43

    Александр, рад что вам помогло!

  • Андрей
    15 мая, 2020, 0:06

    Андрей, здравствуйте.
    Письмо, отправленное через CDO, не появляется в папке «Отправленные» на почтовом сервере «mail.ru». Подскажите, что надо сделать?

  • 15 мая, 2020, 18:30

    Андрей, да, не появляется. Делайте отправку копии на свой адрес.

Оставить комментарий или два

Оповещать о новых комментариях по RSS