8.х Прием и отправка почты с SSL

Тема в разделе "Конфигурирование на платформе "1С:Предприятие 8"", создана пользователем v0233, 16 сен 2014.

  1. TopicStarter Overlay
    v0233
    Offline

    v0233 Опытный в 1С

    Регистрация:
    23 авг 2010
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Через яндекс теперь можно отправлять и принимать письма только через SSL http://help.yandex.ru/mail/mail-clients/ssl.xml#other
    По другому не работает.
    Теперь моя 1с не умеет отправлять и принимать письма с яндекса. Подскажите пожалуйста как быть.
    Вот мой код (порты я поменял, но работать лучше не стало)
    Код:
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    
    // SMTP сервер
    Профиль.АдресСервераSMTP = "smtp.yandex.ru";
    
    // Порт SMTP сервера
    Профиль.ПортSMTP = 465;
    
    // POP3 сервер
    Профиль.АдресСервераPOP3 = "pop.yandex.ru";
    
    // Порт POP3 сервера
    Профиль.ПортPOP3 = 995;
    
    // Пароль к почтовому ящику
    Профиль.Пароль = "*****";
    Профиль.АутентификацияSMTP     = СпособSMTPАутентификации.ПоУмолчанию;
    // Пароль пользователя для SMTP сервера
    Профиль.ПарольSMTP = "*****";
    
    // Логин пользователя
    Профиль.Пользователь = "*****";
    
    // Логин пользователя для SMTP сервера
    Профиль.ПользовательSMTP = "*****";
    
    // Время ожидания выполнения операции в секундах
    
    Профиль.ВремяОжидания = 50;
    Возврат Профиль;
    
  2. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Платформа какая?
    В 8.3.1 1С добавили возможность работы с SSL.
    Если платформа 8.2 и обновление не возможно, то можно попробовать использовать программу stunnel.
  3. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
  4. nomad_irk
    Offline

    nomad_irk Гуру в 1С

    Регистрация:
    20 окт 2008
    Сообщения:
    7.554
    Симпатии:
    716
    Баллы:
    204
    мало задать нужные порты, сам SSL жишь еще включить надо
  5. TopicStarter Overlay
    v0233
    Offline

    v0233 Опытный в 1С

    Регистрация:
    23 авг 2010
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    8.2 у меня
  6. alexburn
    Offline

    alexburn Модераторы Команда форума Модератор

    Регистрация:
    5 янв 2009
    Сообщения:
    14.750
    Симпатии:
    509
    Баллы:
    204
    На 8.3 переходите :), там это есть
  7. strah4
    Offline

    strah4

    Регистрация:
    16 сен 2014
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1
    Тоже перестало сегодня работать, перевел спецом на 8.3 с яндексом все равно не работает. Подключится подлючается, а на

    Попытка
    Почта.Послать(Посылка);

    Исключение
    Сообщить(ОписаниеОшибки());
    Почта.Отключиться();

    Возврат;

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

    Выдает: ОбщийМодуль.РаботаСПочтой.Модуль(65)}: Ошибка при вызове метода контекста (Послать): Неизвестная ошибка (SMTP error code 503)

    расшифровки ошибки не дает.

    Если есть у кого-нибудь рабочий код отсылки сообщений через яндекс очень прошу выложить...
  8. TopicStarter Overlay
    v0233
    Offline

    v0233 Опытный в 1С

    Регистрация:
    23 авг 2010
    Сообщения:
    167
    Симпатии:
    0
    Баллы:
    26
    Я сегодня поставил stunnel (скачать можно отсюда) stunnel.org/downloads.html
    Заработало на 8,2 (так как на 8,3 в моем случае переходить нет смысла)
    Последнее редактирование модератором: 17 сен 2014
  9. Mike_voron
    Offline

    Mike_voron Новичок в 1С

    Регистрация:
    17 сен 2014
    Сообщения:
    1
    Симпатии:
    1
    Баллы:
    4
    переходим на 8.3 так как в 8.2 нет возможности ssl
    добавляем в функцию инициализации профиля

    Профиль.ИспользоватьSSLSMTP = истина;

    Профиль.ИспользоватьSSLPOP3 = истина;



    Код:
    // Формирует почтовый профиль по учетной записи
    //
    // Параметры
    //  УчетнаяЗапись
    //
    // Возвращаемое значение:
    //   ИнтернетПочтовыйПрофиль
    //
    Функция ПолучитьИнтернетПочтовыйПрофиль(УчетнаяЗапись) Экспорт
        Профиль = Новый ИнтернетПочтовыйПрофиль;
    //добав
        Профиль.ИспользоватьSSLSMTP          = истина;
    Профиль.ТолькоЗащищеннаяАутентификацияSMTP   = ложь;
    Профиль.ИспользоватьSSLPOP3         = истина;
    Профиль.ТолькоЗащищеннаяАутентификацияPOP3   = ложь;
    //добав
        Профиль.АдресСервераPOP3 = УчетнаяЗапись.POP3Сервер;
        Профиль.АдресСервераSMTP = УчетнаяЗапись.SMTPСервер;
        Если УчетнаяЗапись.ВремяОжиданияСервера > 0 Тогда
            Профиль.ВремяОжидания = УчетнаяЗапись.ВремяОжиданияСервера;
        КонецЕсли;
        Профиль.Пароль           = УчетнаяЗапись.Пароль;
        Профиль.Пользователь     = УчетнаяЗапись.Логин;
        Профиль.ПортPOP3         = УчетнаяЗапись.ПортPOP3;
        Профиль.ПортSMTP         = УчетнаяЗапись.ПортSMTP;
                       
        Если УчетнаяЗапись.ТребуетсяSMTPАутентификация Тогда
            Профиль.АутентификацияSMTP = СпособSMTPАутентификации.ПоУмолчанию;
            Профиль.ПарольSMTP         = УчетнаяЗапись.ПарольSMTP;
            Профиль.ПользовательSMTP   = УчетнаяЗапись.ЛогинSMTP;
        Иначе
            Профиль.АутентификацияSMTP = СпособSMTPАутентификации.БезАутентификации;
            Профиль.ПарольSMTP         = "";
            Профиль.ПользовательSMTP   = "";
        КонецЕсли;
        Возврат Профиль;
    КонецФункции
    
    Последнее редактирование: 17 сен 2014
    lewko_85 нравится это.
  10. lewko_85
    Offline

    lewko_85 Новичок в 1С

    Регистрация:
    25 фев 2014
    Сообщения:
    5
    Симпатии:
    1
    Баллы:
    4
    Платформа 8.2. Так же подвязаны с почтой яндекса и с 16.09.2014 все перестало работать. Пришлось поменять на сл. код:

    Код:
    //--====== Отправка =======------- через CDO, Адрессаты через ";", СписокВложений - СписокЗначений с именами файлов
    Функция ПослатьПоПочте(Знач Адрессаты,ТемаСообщения = "",СообщениеТекст = "" ,СписокВложений = "")Экспорт
    
        Оправитель         = ""+СокрЛП(Константы.ПочтовыйЯщикОбмена.Получить());
        Пароль             = Константы.ПарольПочтовогоЯщикаОбмена.Получить();
        ТекстСообщения     = ?(СообщениеТекст="","Данные во вложении",СообщениеТекст);
    
        loConfig         = Новый COMОбъект("CDO.Configuration");
        loCdoMessage     = Новый COMОбъект("CDO.Message");
        loCdoMessage.Configuration = loConfig;
        loCdoMessage.From    = Строка("Служба автоматической рассылки Ромашка"""" <"+Оправитель+">");    //loCdoMessage.From    = "Тест 1C"""" <xxxxxxx@yandex.ru>";
        loCdoMessage.To      = Адрессаты;                                                             //loCdoMessage.To      = "xxxxxxx@gmail.ru>";
        loCdoMessage.Subject = ?(ТемаСообщения="","Автоматическая рассылка ООО ""ромашка""",ТемаСообщения);
    
        HTMLBody = "<html>
        |<head>
        |<meta content=""text/html; charset=Windows-1251"" http-equiv=""content-type"">
        |<title> Тестовое сообщение </title>
        |</head>
        |<body>
        |<h4>" + ТекстСообщения + "</h4>
        |<p></p>
        |</body>
        |</html>";
        //loCdoMessage.BodyPart.Charset = "windows-1251"; // это если делать без извратов с оформлением текста письма
        loCdoMessage.HTMLBody = HTMLBody;
    
        Если ТипЗнч(СписокВложений) = Тип("Строка") И Не СписокВложений = "" Тогда
            Попытка
                loCdoMessage.AddAttachment(СписокВложений);
            Исключение
            КонецПопытки;
        ИначеЕсли ТипЗнч(СписокВложений) = Тип("СписокЗначений") Тогда
            Для каждого ПутьКВложению Из СписокВложений Цикл
                Попытка
                    loCdoMessage.AddAttachment(ПутьКВложению.Значение);
                Исключение
                КонецПопытки;
            КонецЦикла;
        КонецЕсли;
        loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").            Value = 2;
        loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").           Value = "smtp.yandex.ru";
        loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").       Value = "465";
        loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").     Value = 1;
        loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").         Value = Оправитель;
        loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").         Value = Пароль;
        loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").           Value = 1;
        loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout").Value = 60;
    
        loConfig.Fields.Update();   
        Попытка
            loCdoMessage.Send();
        Исключение
            Сообщить(ОписаниеОшибки());
            Возврат Ложь;
        КонецПопытки;
    
    КонецФункции
    
    
    
    //---==== Получение =====------------
    Процедура ПолучитьФайлыПоПочте(СписокПолученныхФайлов)Экспорт
        СписокПолученныхФайлов = Новый СписокЗначений;
        ЛогСобытий = "";
        Профиль = Новый ИнтернетПочтовыйПрофиль;
        Профиль.АдресСервераIMAP = Константы.АдресПочтовогоСервера.Получить();
        Профиль.ПользовательIMAP = Константы.ПочтовыйЯщикОбмена.Получить();
        Профиль.ПарольIMAP = Константы.ПарольПочтовогоЯщикаОбмена.Получить();
        Профиль.ПортIMAP = 993;
        Профиль.ИспользоватьSSLIMAP = True;
        ИнтернетПочта = Новый ИнтернетПочта;
        Попытка
            ИнтернетПочта.Подключиться(Профиль, ПротоколИнтернетПочты.IMAP);
            ПараметрыОтбораIMAP = Новый Структура;
            ПараметрыОтбораIMAP.Вставить("Новые", Истина);
            Заголовки = ИнтернетПочта.ПолучитьЗаголовки(ПараметрыОтбораIMAP);
            Если Заголовки.Количество()>0 Тогда
                МассивСообщений = ИнтернетПочта.Выбрать(Истина,Заголовки);
                Если МассивСообщений.Количество() > 0 Тогда
                    НомерФайла = 1;
                    Для Каждого Письмо Из МассивСообщений Цикл
                        Если Письмо.Вложения.Количество() = 0 Тогда
                            Продолжить;
                        Иначе
                            Для каждого Вложение Из Письмо.Вложения Цикл
                                Если Нрег(Прав(Вложение.ИмяФайла,4)) = ".dbf" ИЛИ Нрег(Прав(Вложение.ИмяФайла,4)) = ".xls" ИЛИ Нрег(Прав(Вложение.ИмяФайла,4)) = "xlsx"ИЛИ Нрег(Прав(Вложение.ИмяФайла,4)) = ".zip"  Тогда
                                    УникальноеИмяФайла = Константы.КаталогОбмена.Получить()+Формат(ТекущаяДата(),"ДФ=ddhhmm")+"-" +НомерФайла+"_"+Вложение.ИмяФайла;
                                    Попытка
                                        Вложение.Данные.Записать(УникальноеИмяФайла);
                                    Исключение
                                        Сообщить("Ошибка записи вложения: "+УникальноеИмяФайла+" " + ОписаниеОшибки());
                                    КонецПопытки;
                                    НомерФайла = НомерФайла + 1;
                                    СписокПолученныхФайлов.Добавить(УникальноеИмяФайла,Вложение.ИмяФайла);
                                КонецЕсли;
                            КонецЦикла;
                        КонецЕсли;
                    КонецЦикла;
                КонецЕсли;
            КонецЕсли;
            ИнтернетПочта.Отключиться();
        Исключение
            Сообщить("Ошибка при подключении к серверу" + ОписаниеОшибки());
        КонецПопытки;
    
    КонецПроцедуры
    У меня заработало, надеюсь и вам пригодиться)))
    soldafon нравится это.
  11. Bud
    Offline

    Bud

    Регистрация:
    17 сен 2014
    Сообщения:
    1
    Симпатии:
    0
    Баллы:
    1

    Подскажите, а куда этот код нужно вставить?
  12. Evgeny965
    Offline

    Evgeny965

    Регистрация:
    18 сен 2014
    Сообщения:
    5
    Симпатии:
    0
    Баллы:
    1
    Спасибо помогло.
  13. Netnic
    Offline

    Netnic Опытный в 1С

    Регистрация:
    9 ноя 2011
    Сообщения:
    427
    Симпатии:
    1
    Баллы:
    29
    Через stunnel все работет отлично на 8.2., тут
  14. shurikvz
    Offline

    shurikvz Модераторы Команда форума Модератор

    Регистрация:
    1 окт 2009
    Сообщения:
    8.409
    Симпатии:
    316
    Баллы:
    104
    Так, дополнение к теме для всех:
    Вышли обновления конфигураций.
    Для УТ 10.3 это релиз 10.3.30.1, для КА 1.1.52.1, к УПП доступа нет, вероятно там релиз 1.3.57.1.

Поделиться этой страницей