Имя: Пароль:
1C
 
Отправка Email из 1С
0 Shmidt
 
02.03.16
15:30
Народ посмотрите, подскажите сломал всю голову. Конфигруация Отель 8.2.2.44, платформа 8.3.6.2152. Вот код:

vEMail = New InternetMailMessage();
        // Addresses and names
        vEMail.SenderName = vCurEmployee.GetObject().pmGetEmployeeDescription(SessionParameters.CurrentLanguage);
        If Not IsBlankString(vCurEmployee.EMail) Then
            vEMail.From = TrimAll(vCurEmployee.EMail);
        EndIf;
        
        If Not IsBlankString(vCurEmployee.ReplyToEMail) Then
            vEMailsList = cmParseEMailAddress(TrimAll(vCurEmployee.ReplyToEMail));
            For Each vEMailItem In vEMailsList Do
                vEMail.ReplyTo.Add(vEMailItem.Value);
            EndDo;
        EndIf;
        // Add to address
        //ClientEMail = New InternetMailAddress;
        //ClientEMail.Address = (TrimAll(Guest.EMail));
        vEMailsList = cmParseEMailAddress(TrimAll(Guest.EMail));
        //vEMailsList = Guest.EMail;
        For Each vEMailItem In vEMailsList Do
        //Address = Guest.EMail;
        //vEMail.Получатели.Добавить(Address); ;
        vEMail.To.Add(vEMailItem.Value);
         //vEmail.
            //vEMail.To.Add(ClientEMail);
        EndDo;
        // Add Bcc address
        If Not IsBlankString(vCurEmployee.BccEMail) Then
            vEMailsList = cmParseEMailAddress(vCurEmployee.BccEMail);
            For Each vEMailItem In vEMailsList Do
                vEMail.Bcc.Add(vEMailItem.Value);
            EndDo;
        EndIf;
        // Add message subject and text
        vEMail.Subject = "Уведомление об оформлении брони.";
        vEMail.Texts.Add(TrimAll(Guest.FirstName) + " " + TrimAll(Guest.SecondName) + ", парк-клуб Дубровский уведомляет Вас, о том, что на Ваше имя оформлена бронь № " + GuestGroup.Code + " на дату " + Format(CheckInDate,"DF=dd.MM.yyyy"), InternetMailTextType.HTML);
        vEMail.ProcessTexts();
        //vEMail.Subject = TrimAll(pNotificationRow.Remarks);
        //If Find(Lower(TrimAll(pNotificationRow.DocumentText)), "<html") = 0 Then
        //    vEMail.Texts.Add(TrimAll(pNotificationRow.DocumentText));
        //Else
        //    vEMail.Texts.Add(TrimAll(pNotificationRow.DocumentText), InternetMailTextType.HTML);
        //    vEMail.ProcessTexts();
        //EndIf;
        // Add file as attachement
        //If Not IsBlankString(pNotificationRow.FileName) Then
        //    // Save file to the temp directory
        //    vFileName = cmGetValidFileName(pNotificationRow.FileName);
        //    vFullFileName = TempFilesDir() + vFileName;
        //    vBinary = pNotificationRow.ExtFile.Get();
        //    vBinary.Write(vFullFileName);
        //    vEMail.Attachments.Add(vFullFileName, vFileName);
        //EndIf;
        // Create profile to use for connection
        vProfile = New InternetMailProfile();
        vProfile.POP3BeforeSMTP = vCurEmployee.InternetMailPOP3BeforeSMTP;
        If vProfile.POP3BeforeSMTP Then
            vProfile.POP3ServerAddress = vCurEmployee.InternetMailPOP3ServerAddress;
            vProfile.POP3Port = vCurEmployee.InternetMailPOP3Port;
            vProfile.POP3Authentication = cmGetPOP3Authentication(vCurEmployee.InternetMailPOP3Authentication);
            vProfile.User = vCurEmployee.InternetMailUser;
            vProfile.Password = vCurEmployee.InternetMailPassword;
        EndIf;
        vProfile.SMTPServerAddress = vCurEmployee.InternetMailSMTPServerAddress;
        vProfile.SMTPPort = vCurEmployee.InternetMailSMTPPort;
        vProfile.SMTPAuthentication = cmGetSMTPAuthentication(vCurEmployee.InternetMailSMTPAuthentication);
        vProfile.SMTPUser = vCurEmployee.InternetMailSMTPUser;
        vProfile.SMTPPassword = vCurEmployee.InternetMailSMTPPassword;
        vProfile.Timeout = vCurEmployee.InternetMailTimeout;
        //vProfile.SMTPUseSSL = True;
        //vProfile.POP3UseSSL = True;
        // Create connection to the mail server
        vInternetMail = New InternetMail;
        vInternetMail.Logon(vProfile);
        vInternetMail.Send(vEMail);
        vInternetMail.Logoff();
    EndIf;

Падает в этом месте vInternetMail.Send(vEMail), пишет ошибку: Неизвестная ошибка (SMTP error code 503)
1 Shmidt
 
02.03.16
15:33
Всю голову сломал на этом, а из-за этой ошибки не работает целая подсистема
2 Garykom
 
гуру
02.03.16
15:36
К нам на работу однажды устраивался на должность программиста 1С один дельфист
Сказал что писал уже под 1С 7.7

У меня первый вопрос был: "а код по русски или на английском писали?"
После ответа: "на английском" все было понятно ))
3 Amra
 
02.03.16
15:37
Авторизацию для почтового ящика отправителя кто будет устанавливать?
4 Shmidt
 
02.03.16
15:38
Ну это не мое поделие. Гостиничные технологии данную конфу разрабатывали
5 Shmidt
 
02.03.16
15:39
(3) Уточните пожалуйста?
6 Fragster
 
гуру
02.03.16
15:50
есть мнение, что если конфигурация на БСП, то правильнее создать документ ЭлектронноеПисьмоИсходящее и дождаться его отправки регламентным заданием
7 Shmidt
 
02.03.16
15:55
(3) vInternetMail.Logon(vProfile);
8 Shmidt
 
02.03.16
15:56
(6) Дело в том, что на предыдущем релизе все отрабатывало нормально
9 AceVi
 
02.03.16
16:00
Это может быть что угодно. Например порт smtp забит не верно. надо смотреть настройки подключения и настройки почтового сервера куда подключаешься.
10 Shmidt
 
02.03.16
16:04
(9) Так авторизация проходит нормально, падает на отправке.
Просто до обеда валилось все на авторизации, поэтому все настройки сделал и перепроверил несколько раз.
11 f_vadim
 
02.03.16
16:04
а ничо так, если then и endif заменить на { и } код будет выглядеть прям по-взрослому :)
12 Shmidt
 
02.03.16
16:13
(11) Код не мой. Вообще мне эта дурацкая конфа на поддержку недавно попала и сплошные проблемы с ней
13 Shmidt
 
02.03.16
16:13
(11)  Где конкретно?
14 Shmidt
 
02.03.16
16:15
(11)  If vProfile.POP3BeforeSMTP Then
            vProfile.POP3ServerAddress = vCurEmployee.InternetMailPOP3ServerAddress;
            vProfile.POP3Port = vCurEmployee.InternetMailPOP3Port;
            vProfile.POP3Authentication = cmGetPOP3Authentication(vCurEmployee.InternetMailPOP3Authentication);
            vProfile.User = vCurEmployee.InternetMailUser;
            vProfile.Password = vCurEmployee.InternetMailPassword;
        EndIf;
В этом месте?
15 Fragster
 
гуру
02.03.16
16:16
(8) значит надо посмотреть, что изменилось в этом месте кода, что изменилось в режиме совместимости конфигурации (по сравнению с предыдущим релизом). Анализировать.
16 f_vadim
 
02.03.16
16:17
(12) моё замечание не имеет отношения к решаемой проблеме
17 Shmidt
 
02.03.16
16:19
(15) Этот кусок кода дописан другим программистом и я его благополучно перенес в новый релиз. Настройки все поменял
18 drcrasher
 
02.03.16
16:19
19 Shmidt
 
02.03.16
16:19
(16) Да я понял. До наведения красоты далеко еще. Для начала хочу, чтобы в принципе все работало, хоть как-то (((
20 Shmidt
 
02.03.16
16:20
(18) 1 письмо отправляется
21 Shmidt
 
02.03.16
16:23
Еще вопрос, посмотрел отладчиком... Отправлитель при инициализации добавляется, т.е. поле From - разворачивается и видно адрес и т.д., а поле То - нет. Но правой кнопокой открывается и показывает присвоенный адрес
22 Shmidt
 
02.03.16
16:24
Посмотрел СП From - строка, То - ИнтернетПочтовыйАдрес, а передаем туда строку, нормально это?
23 Лефмихалыч
 
02.03.16
16:33
Думаю, дело в тех значениях, которые вот сюда складываются:
vProfile.SMTPServerAddress, vProfile.SMTPPort, vProfile.SMTPAuthentication

тухлые значения какие-то
24 Shmidt
 
02.03.16
16:45
(23) Это настройки задаются у пользователя под которым выполняется данный код
25 Shmidt
 
02.03.16
16:46
SMTPServerAddress - ip компа, на котором развернута база
SMTPPort - 25
SMTPAuthentication - По умолчанию
26 Shmidt
 
02.03.16
16:48
На компе стоит S tunel, которая ловит письма на 25 порту и переправляет на SMTP и POP3 порты Яндекса с поддержкой SSL
27 Лефмихалыч
 
02.03.16
16:56
(26) а ты без туннеля пробовал?
28 Лефмихалыч
 
02.03.16
16:58
503 означает, что до смтп ты дошел и успешно ему что-то передал, но он тебя не понял.
Либо параметры аутентификации не те, либо с шифрованием напутлякал
29 f_vadim
 
02.03.16
17:05
предположу, что stunnel криво работает.
или 1с лезет мимо него без ssl к почтовику.
30 f_vadim
 
02.03.16
17:08
stunnel не письма ловит.
кстати, можно без него попробовать - раскомментировать
vProfile.SMTPUseSSL = True;
и прописать адреса и порты яндекса. вроде допиливали платформу, чтоб без костылей работало.
31 Shmidt
 
02.03.16
17:13
(30) Пробовал, вообще все виснет и даже в ошибку не выпадает
32 f_vadim
 
02.03.16
17:18
а stunnel в логах что-нибудь пишет?
33 Shmidt
 
02.03.16
17:23
(32) Неть. Только что попробовал на другой платформе 8.2 все взлетело
34 Shmidt
 
02.03.16
17:23
Проблема в платформе
35 Shmidt
 
02.03.16
17:24
Причем проблема серьезная, т.к. текущий релиз только с 8.3.6 работатет ((((
36 Fragster
 
гуру
02.03.16
17:25
ну так ты посмотри примечания к релизу. например новое поведение использованных объектов
37 Shmidt
 
02.03.16
17:29
(36) Ну да так и сделаю. 5 вариантов еще. Есть надежда, что взлетит )))
38 Fragster
 
гуру
02.03.16
17:29
к релизу платформы
39 Shmidt
 
02.03.16
17:29
Но сама конфа - для врагов!!!!
40 Shmidt
 
02.03.16
17:30
Данные так хранятся, что отчет не соберешь ((( Есть моменты, что вместо РС используются справочники