Имя: Пароль:
   
1C
1С v8
Проблема с отправкой почты
0 YgrekXYZ_
 
07.11.16
07:45
Подскажите плиз, что не так.
Есть нечто, отправляющее почту.
Захожу на сервер, где стоит сервер приложений.
Запускаю "&НаКлиенте" работает.
Запускаю "&НаСервере" не работает.
Пишет проблема авторизации.

&НаСервере
Функция ОтправитьПисьмо()
    
    //Создание объектов
    Попытка
        loConfig = Новый COMОбъект("CDO.Configuration");
        loCdoMessage = Новый COMОбъект("CDO.Message");
    Исключение
        Сообщить(ОписаниеОшибки());
        Возврат Ложь;
    КонецПопытки;
    
    //Адрес получателя
    loCdoMessage.To = "************";
    loCdoMessage.From = "************";
    loCdoMessage.Subject = "Тема";
    loCdoMessage.BodyPart.CharSet = "Windows-1251";
    loCdoMessage.Textbody = "Текст сообщения1111";
    
    //Параметры сообщения
    loCdoMessage.Configuration = loConfig;
    //Адрес SMTP-Сервера
    loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = "************";
    //Порт SMTP-сервера
    loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport").Value = 25;
    //Имя пользвоателя SMTP-сервера
    loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusername").Value = "************";
    //Пароль пользвоателя SMTP-сервера
    loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value = "************";
    //Способ передачи сообщения:                                                                
    //  1 - Отправить сообщение с помощью локального каталога SMTP-службы
    //  2 - Отправить сообщение через сеть (по протоколу SMTP по сети).
    loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2;
    //Проверка подлинности:
    //  0 - Без аутентифиации
    //  1 - Использовать базовую (открытым текстом) проверку подлинности.
    //  2 - Использовать проверку подлинности ntlm
    loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 2;
    //Использование протокола SSL
    //  0 - Не использовать
    //  1 - Использовать
    loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpusessl").Value = 0; //?(УчетнаяЗаписьЭП.ИспользоватьSSL,1,0);
    //Число секунд ожидания для службы SMTP
    loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout").Value = 60;
    //Обновляем настройки
    loConfig.Fields.Update();
    
    //Отправка сообщения
    Попытка
        loCdoMessage.Send();
        Возврат "Ok";
    Исключение
        
        Сообщить(ОписаниеОшибки());
        Возврат ОписаниеОшибки();
    КонецПопытки;
    
КонецФункции
1 wormselfish
 
07.11.16
07:58
А если клиент 1с предприятие запустить на машине где сервер, и запустить "&НаКлиенте", то тоже не работает?
2 Mauser
 
07.11.16
08:07
Все проблемы от

loConfig.Fields.Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 2;
3 YgrekXYZ_
 
07.11.16
08:09
1. Если запускать, где сервер пашет "&НаКлиенте", не пашет на "&НаСервере"

2. Что не так ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 2;

А что должно быть?
4 anatoly
 
07.11.16
08:10
(0) зачем вы все СОМ-объекты используете, когда есть ИнтернетПочта???

(2) была та же проблема у одного клиента где тоже использовали CDO.Message (из какой то древнеющей версии перетащили) решилась переходом на ИнтернетПочта.
5 YgrekXYZ_
 
07.11.16
08:24
0)зачем вы все СОМ-объекты используете
Захотелось :) Это не тема для обсуждения.

4) решилась переходом на ИнтернетПочта.
Будут такие же проблемы с авторизацией и с 1С-объектами.
6 Mauser
 
07.11.16
08:42
(5) При использовании и не понимании ntlm авторизации - несомненно. Удачи и семь футов под килем
7 YgrekXYZ_
 
07.11.16
08:44
6) почему на клиенте отрабатывает?
8 YgrekXYZ_
 
07.11.16
08:46
зайдем с другой стороны, тоже проблемы с аутентификацией:


    ПочтПрофиль=Новый ИнтернетПочтовыйПрофиль();
    ПочтПрофиль.АдресСервераPOP3 = "10.78.2.26";
    ПочтПрофиль.АдресСервераSMTP = "10.78.2.26";
    ПочтПрофиль.Пользователь="*****************";
    ПочтПрофиль.Пароль = "*****************";
    ПочтПрофиль.АутентификацияSMTP = СпособSMTPАутентификации.Login;    
    ПочтПрофиль.ПользовательSMTP = "*****************";;
    ПочтПрофиль.ПарольSMTP = "*****************";;
    ПочтПрофиль.ВремяОжидания=60;
    ПочтПрофиль.ПортPOP3=110;
    ПочтПрофиль.ПортSMTP=25;
    
    ПочтЗаяв= Новый ИнтернетПочта();
    ПочтСообщение = Новый ИнтернетПочтовоеСообщение();
    ПочтСообщение.Кодировка="windows-1251";
    
    ПочтСообщение.Тема=СокрЛП("Тема");
    ПочтСообщение.Тексты.Добавить("Тело",ТипТекстаПочтовогоСообщения.HTML);
    
    ПочтСообщение.Получатели.Добавить("igor.tsyganov@rt.ru");
    ПочтСообщение.Отправитель.Адрес=СокрЛП("dr_orenburg@volga.rt.ru");
    ПочтСообщение.Отправитель.ОтображаемоеИмя=СокрЛП("dr_orenburg@volga.rt.ru");
    
    РезультатПосылки = Новый Структура;
    РезультатПосылки.Вставить("СтатусОтправки",Истина);
    РезультатПосылки.Вставить("Примечание","Сообщение успешно отправлено");
    
    Результат=Ложь;
    ОписаниеОшибки="";
    
    Попытка
        ПочтЗаяв.Подключиться(ПочтПрофиль);
        Попытка
            ПочтЗаяв.Послать(ПочтСообщение);
            РезультатПосылки = Новый Структура;
            РезультатПосылки.Вставить("СтатусОтправки",Истина);
            РезультатПосылки.Вставить("Примечание","Сообщение успешно отправлено");
        Исключение     
            ОписаниеОшибки=ОписаниеОшибки();
            РезультатПосылки = Новый Структура;
            РезультатПосылки.Вставить("СтатусОтправки",Истина);
            РезультатПосылки.Вставить("Примечание",ОписаниеОшибки);
        КонецПопытки;    
        ПочтЗаяв.Отключиться();
        //Возврат РезультатПосылки;
        
    Исключение
        ОписаниеОшибки=ОписаниеОшибки();
        РезультатПосылки = Новый Структура;
        РезультатПосылки.Вставить("СтатусОтправки",Истина);
        РезультатПосылки.Вставить("Примечание",ОписаниеОшибки);
        //Возврат РезультатПосылки;
    КонецПопытки;
9 YgrekXYZ_
 
07.11.16
08:49
Способы аутентификации все перепробовал.
Для логина ошибка так выглядит:
Ошибка при вызове метода контекста (Подключиться): Параметр команды не реализован (SMTP error code 504, 5.7.4 Unrecognized authentication type)

для прочих типа по умолчанию
Сервер требует аутентификации (SMTP error code 530, 5.7.1 Client was not authenticated)
10 Забияка
 
07.11.16
09:14
+(9)Добавлю и свои 5 копеек.. Что странно, так это то, что в файловой версии работает, а в клиент-серверной выдает теже ошибки..
11 YgrekXYZ_
 
07.11.16
09:44
(6) захожу телнетом.
набираю ehlo - показывает поддержку ntlm
12 YgrekXYZ_
 
07.11.16
09:50
если заработает 1С-объекты, то буду только рад.
код работал/работал на старом почтовике.
на новом пошли проблемы с авторизацией.

специально привел код от CDO.Message, чтобы было понятно при каких параметрах происходит нормальная посылка почты.
13 DrZombi
 
07.11.16
10:00
(0) На сервере нет почты
Нет права на почту и т.д.
14 DrZombi
 
07.11.16
10:01
(12) Вы сервер с ПК не путаете?
Понятия разделяете? :)
Что у вас подразумевается под словом "НаСервере"? ))
15 DrZombi
 
07.11.16
10:02
16 DrZombi
 
07.11.16
10:03
Во тут разжевано

Директивы выполнения кода в управляемых формах 1С 8

http://programmist1s.ru/direktivyi-vyipolneniya-koda1s-v-upravlyaemyih-formah/
17 Забияка
 
07.11.16
10:15
(15)А каким образом это связано с авторизацией на почтовом сервере?
18 YgrekXYZ_
 
07.11.16
10:18
(13) Что значит нет права на почту и т.д.
простое подключение телнетом проходит на ура.
как проверить права и т.д?

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

Вытащил код на форму, когда стал ковыряться в проблеме.
19 anatoly
 
07.11.16
10:32
(5) "Будут такие же проблемы с авторизацией и с 1С-объектами."

я же внятно написал - таким способом проблема решилась.

(18) подключение телнетом по смтп?? ))

из любого обычного клиента _с_сервера_ почта отправляется?

(13) +100
20 YgrekXYZ_
 
07.11.16
11:27
(19) Речь идет про 1с код в (8). В (0) по сути была попытка показать с какими параметрами уходит принципиально почта.

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

С этого сервака сообщения каждое утро отсылаются через другой почтовик кодом в (8). Понятно, что логины/пароли/адреса другие.

То есть не в коде дело.
Понятно, что-то с какими-то правами настройками дело.
Вопрос с какими.

Про обычный клиент-аутлук: сейчас попробую поймать админов, поставить клиент.
Повторюсь на другой почтовик с этого же сервера без проблем уходит.

Может правда нечто и перекрыто.
21 YgrekXYZ_
 
07.11.16
13:29
Н-да, действительно в оутлуке проблема с отправкой на новый почтовик ....
22 anatoly
 
07.11.16
14:34
(20) я с удаленного компа пингую и подключаюсь по ssh на сервер (не 1С) где стоит почта - но на СМТП он никого извне не пускает, только из внутренней сети РДП. продолжать?...

(21) попробуй уже ИнтернетПочта. не долго же.