| 
    
            
         
         | 
    
  | 
v8: Ошибка при отправке почты ("SMTP error code 500, 5.3.3 Unrecognized command) [Почти решено] | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Armando    
     16.09.13 
            ✎
    11:37 
 | 
         
        Уже была тема v8: 1c 8.2.17.157 не работает отправка почты на x64
 
        При отправке почты на некоторые адреса появляется сообщение об ошибке "SMTP error code 500, 5.3.3 Unrecognized command" Столкнулся с такой же проблемой. Платформа 8.2.18.109. На 16 платформе такого не было. Кто-нибудь сталкивался?  | 
|||
| 
    1
    
        eklmn    
     гуру 
    16.09.13 
            ✎
    11:56 
 | 
         
        при чем тут 1с?     
         | 
|||
| 
    2
    
        Armando    
     16.09.13 
            ✎
    12:13 
 | 
         
        (1) Потому что отправка производится средствами платформы. Объект ИнтернетПочта.     
         | 
|||
| 
    3
    
        shuhard    
     16.09.13 
            ✎
    12:54 
 | 
         
        (0)[Кто-нибудь сталкивался?]
 
        мало информации, нужен как минимум лог со стороны почтовика  | 
|||
| 
    4
    
        Armando    
     07.10.13 
            ✎
    11:29 
 | 
         
        Нашел причину. Кому интересно, проблема в том, что в теле сообщения содержится строка, где содержится только точка.
 
        До пользователя доходит сообщение с текстом до этой точки. Например, сообщение: абв где жзи . клм Пользователь получит: абв где жзи Как мне потом сообщил знающий человек - "точка" для сервера это команда отправки сообщения. А ошибка появляется потому что сообщение уже отправлено "точкой", а 1С пытается его отправить своей командой "Послать". Сервер просто не понимает чего от него хотят.  | 
|||
| 
    5
    
        User_Agronom    
     07.10.13 
            ✎
    11:32 
 | 
         
        Гм. А если сообщение из нескольких предложений? И как их разделять?
 
        Почему Thunderbird нормально шлёт с точками?  | 
|||
| 
    6
    
        Armando    
     07.10.13 
            ✎
    11:35 
 | 
         
        (5) В строке должна быть только точка. Если в строке есть что-то еще кроме точки, то ошибки не будет.
 
        Почтовые клиенты как-то обходят это.  | 
|||
| 
    7
    
        User_Agronom    
     07.10.13 
            ✎
    11:40 
 | 
         
        (6) Спасибо.     
         | 
|||
| 
    8
    
        Armando    
     07.10.13 
            ✎
    11:59 
 | 
         
        +(4) Это описано в RFC 2821
 
        The mail data is terminated by a line containing only a period, that is, the character sequence "<CRLF>.<CRLF>" (see section 4.5.2). This is the end of mail data indication. http://tools.ietf.org/html/rfc2821#section-4.1.1.4  | 
|||
| 
    9
    
        Armando    
     07.10.13 
            ✎
    12:07 
 | 
         
        (3) а в логах мне отказали
 
        сказали, если включат логирование, то все ляжет  | 
|||
| 
    10
    
        User_Agronom    
     07.10.13 
            ✎
    12:46 
 | 
         
        (9)  то все ляжет
 
        Правильнее "лягут". И не все, а только сисадмины  | 
|||
| 
    11
    
        eklmn    
     гуру 
    07.10.13 
            ✎
    12:48 
 | 
         
        (4)(5) ну тут как бы программировать надо :)     
         | 
|||
| 
    12
    
        eklmn    
     гуру 
    07.10.13 
            ✎
    12:49 
 | 
         
        1с то при чем все-таки? или ей в платформу должны были все РФЦ зашить?     
         | 
|||
| 
    13
    
        Armando    
     07.10.13 
            ✎
    12:59 
 | 
         
        (12) 1С тут не при чем оказался. 1С шлет серверу команду DATA, а в ней текст сообщения.     
         | 
|||
| 
    14
    
        oleg_km    
     07.10.13 
            ✎
    13:59 
 | 
         
        Для того, чтобы отправка писем не зависело от содержания и применяют например base64 кодирование. Если бы исходный текст, содержащий пустые строчки с точкой был предварительно base64 закодирован, то при передаче в протокол уже бы не попали лишние управляющие последовательности     
         | 
|||
| 
    15
    
        Armando    
     07.10.13 
            ✎
    14:10 
 | 
         
        (14) Но тогда на другом конце его надо раскодировать. Получатель (пользователь) не будет же самостоятельно это делать. Или это как-то автоматически разруливается?
 
        Мне как раз предстоит решить эту проблему сообщений с точками.  | 
|||
| 
    16
    
        oleg_km    
     07.10.13 
            ✎
    14:34 
 | 
         
        (15) Ну это как раз в РФЦ и прописано, так называемое MIME-кодирование. Каждый компонент письма имеет заголовок, где в том числе и указывается примененное кодирование, соответственно клиент читает этот заголовок и применяет соответствующее раскодирование. Не знаю как это реализовано в 1С ИнтернетПочта, давно не пользую.     
         | 
|||
| 
    17
    
        Armando    
     07.10.13 
            ✎
    14:42 
 | 
         
        (16) Понял. Спасибо.     
         | 
|||
| 
    18
    
        Armando    
     07.10.13 
            ✎
    15:41 
 | 
         
        Странно.
 
        На ИТС нанписано Протокол SMTP позволяет посылать только текстовые данные, при этом отводя на каждый октет (символ) только 7 или 8 бит. Все текстовые данные сообщения посылаются в Unicode (16 бит на символ), поэтому необходимо предварительное конвертирование в UTF-8. UTF-8 кодирует один символ текста от одного до четырех байт по 8 бит каждый. Но UTF-8 строка является бинарными данными, а для почтовых протоколов это не приемлемо. Таким образом, полученная UTF-8 строка еще дополнительно кодируется (не путать с шифрованием) по методу base64. http://its.1c.ru/db/metod81#content:2352:1 А вот что в исходнике письма: Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: 8bit  | 
|||
| 
    19
    
        Armando    
     07.10.13 
            ✎
    16:04 
 | 
         
        Короче, не стал париться. Сделал отправку в HTML.
 
        Но интересно было бы узнать православное решение.  | 
|||
| 
    20
    
        oleg_km    
     07.10.13 
            ✎
    16:11 
 | 
         
        (19) Не знаю, какое решение является православным, сам уже давно не пользуюсь встроенными в 1С объектами. Принятую почту "раскодирую" с помощью CDO, исходящую почту формирую вручну по стандарту, это не так сложно. Просто в свое время жестоко обломался в ИнтернетПочта, осадочек остался     
         | 
|||
| 
    21
    
        Armando    
     07.10.13 
            ✎
    16:19 
 | 
         
        (20) У меня немного другой подход к разработке. По максимуму использую объекты платформы. Ибо кроссплатформенность и вообще.
 
        Спасибо, что навел на мысль.  | 
|||
| 
    22
    
        oleg_km    
     07.10.13 
            ✎
    17:54 
 | 
         
        (21) Флаг в руки. Я тоже не от любви к искусству убежал на CDO. Долго жрал кактусы, но теперь плюнул на это дело. Мне кажется 1С распыляется в данном случае: всякие там интернет почты, географические схемы и пр. фигня. Лучше бы просто сделали встроенную поддержку .NET и/или Java. Тогда бы кому нужно все эти системные штучки приделывали сами, появились бы разные библиотечки (ну там готовые обработки). А то они же сами не верят в свои поделки. В БП для ЭДО используется отнють не ИнтернетСоединение, а специальная ВК, лежащая в архиве (по крайней мере в 2.0 так было вроде).     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |