|
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 так было вроде).
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |