Имя: Пароль:
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
Данные так хранятся, что отчет не соберешь ((( Есть моменты, что вместо РС используются справочники
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn