Имя: Пароль:
1C
1С v8
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 так было вроде).
Здесь можно обсудить любую тему при этом оставаясь на форуме для 1Сников, который нужен для работы. Ymryn