Применений этому механизму можно найти достаточно много, например:
- Отправка документов (договоров, счетов, актов и пр.) непосредственно из 1С на email клиента
- Рассылка отчетов из 1С по расписанию на почту руководителям подразделений
- Обмен данными 1С с разными системами
- Отправка заказов поставщику из 1С при дефиците определенных товаров
- и т.д.
Поскольку работа с почтой из 1С используется в важных бизнес-процессах компании, то необходимо обеспечить стабильную работу этого механизма: письма должны отправляться и приниматься стабильно и без ошибок.
На практике часто возникают ситуации, когда в какой-то момент (обычно в самый неподходящий :)) отправка писем из 1С или прием писем в 1С перестает работать.
В результате последствия могут самыми разными:
- Клиент не получит вовремя счет на оплату — компания не получит деньги вовремя



Будем рассматривать типовой механизм отправки электронной почты из 1С: т.е. со стороны 1С идет подключение к pop3 или smtp-серверу одного из почтовых сервисов: yandex, google, mail.ru и пр.
Ошибка № 1. Аутентификация не прошла (SMTP error code 535 5.7.8 Username and Password not accepted)
Скриншот ошибки, которую вы можете встретить в 1С:
- Неверно указан логин/пароль
Часто бывает так что на стороне аккаунта в yandex/google изменили пароль, а в 1С применить изменения забылиЧто делать:
проверить учетные данные (логин/пароль), под которыми выполняется подключение из 1С к smtp-серверу и обновить их.
В настройках безопасности аккаунта закрыт доступ для «ненадежных» приложений
Если вы используете для работы с почтой аккаунт в почтовом сервисе google, то на уровне настроек аккаунта может быть закрыт доступ к аккаунту для «ненадежных» по мнению google приложений. К таким приложениям, к сожалению, google может отнести 1С 🙂
Что делать:
Заходим в настройки безопасности аккаунта google: https://myaccount.google.com/security Открываем доступ к аккаунту для ненадежных приложений:
Ошибка № 2. Сервис отключен с разрывом канала (SMTP error code 421 SMTP connection broken (reply))
Скриншот ошибки, которую вы можете встретить в 1С:
Это означает, что почтовый сервис расценил письма, которые вы отправляете из 1С, как СПАМ, и они не будут доставлены получателю. Такая ситуация может возникнуть, если вы выполняете массовые email-рассылки из 1С большому количеству клиентов.
Что делать:
Шаг 1. Проверить наличие IP-адреса вашего сервера в СПАМ базах.
Один из удобных способов — воспользоваться сайтом 2ip: https://2ip.ru/spam/. Необходимо ввести IP-адрес и нажать на кнопку «Проверить». На выходе получите примерно такую таблицу:
Шаг 2. Вывести IP из спам базы
В зависимости от того в какой из спам листов попал ваш IP действия будут немного отличаться, но принцип один и тот же — нужно найти сайт этого спам-листа и отправить апелляцию. Рассмотрим, например, как вывести IP из спам листа BARRACUDA.
Заходим на сайт BARRACUDA, форма для отправки апелляции находится тут:
http://www.barracudacentral.org/rbl/removal-request
- Email Server IP Address — IP-адрес, который угодил в спам лист
- Email Address — личная почта. На эту почту придет ответ от Barracuda
- Phone Number — номер телефона для связи (звонить вряд ли будут, но указать нужно)
- Reason for Removal — тут надо написать (на английском) почему указанный IP-адрес должен быть удален из спам листа. Можно воспользоваться переводчиком и сформировать, например, такое оправдание: «Сотрудник не правильно пользовался сервером. Он наказан. Ситуацию исправили. Удалите, пожалуйста IP из спам листа»
После этого нажимаем «Submit request» и ждем ответа. На указанный в форме email должно прийти уведомление, которое начинается примерно с таких слов:
Шаг 3. Проверить отправку почты из 1С
Если сделали все правильно — отправка должна выполняться без ошибок.
Таким образом, в этой статье, мы рассмотрели некоторые ошибки, связанные с отправкой (получением) email из/в 1С, возможные причины и как устранить эти ошибки.
Если вам помогла эта статья, напишите об этом в комментариях. Также если вам не удалось решить ошибки, связанные с отправкой почты из 1С, опишите в комментариях проблему и текст ошибки. В этом случае мы постараемся вам помочь. К тому же это будет полезно другим и мы сможем дополнить текущую статью.
7 часов назад, Waldemar сказал:
Хотелось бы узнать как это хоть примерно возможно
Находишь функцию отправки сообщения на сервер, выясняешь, как для нее формируются параметры вызова, пишешь создание потока с формированием своего пакета и передачей его в ту функцию.
7 часов назад, Waldemar сказал:
какой профит с этого можно получить
Зависит от игры, а также от слабых мест сервера.
Согласен. Я эту идею придумал уже давным давно, и описал в README.md своего Fork’а (https://github.com/CrafterKolyan/SI-Remastered), но есть проблема, состоящая в том, что мне придётся потратить на реализацию слишком много времени, т.к. я должен практически с нуля написать клиент игры SIGame и я понимаю, что в такой ситуации писать его на C# не очень хочется, т.к. я скорее всего очень быстро потеряю кроссплатформенность клиента, а проще сразу всё переписывать на Java. Тем не менее, сравнить код с чем-то реальным невозможно, документации по общению с сервером тоже нет. Поэтому одной из основных проблем является отсутствие полного кода SIGame, причём насколько я помню обсуждение о том, что код SIGame надо открыть было и @VladimirKhil сказал, что выложит его после некоторых «приукрашиваний», но пока новостей об этом нет. Если честно, мне будет достаточно любого кода, если надо будет сам отрефакторю и напишу все необходимые фишки, связанные с честностью игры и стабильностью работы клиента.
-
#2
Больше кода, пожалуйста. И краш-репорт целиком.
-
#3
Больше кода, пожалуйста. И краш-репорт целиком.
там нет моего кода от слова совсем. все скопировано с этой темы, единственное изменение — PacketHandlerClient у меня без static методов, инстанс создается и хранится в основном классе
Последнее редактирование: 15 Июл 2020
-
#4
У меня где-то в nguard’e для ведра был способ отправки пакета…
final ByteArrayOutputStream bo = new ByteArrayOutputStream();
final DataOutputStream output = new DataOutputStream(bo);
//Запись в output utf-стринга//
C17PacketCustomPayload cpl = new C17PacketCustomPayload("ngguard", bo.toByteArray());
Minecraft.func_71410_x().field_71439_g.field_71174_a.func_147297_a((Packet)cpl);
Но тут srg обфа(мне лень её снимать, так что давай сам)
-
#5
У меня где-то в nguard’e для ведра был способ отправки пакета…
в nguard
C17PacketCustomPayload payload = new C17PacketCustomPayload("канал", bos.toByteArray());
Minecraft.func_71410_x().field_71439_g.field_71174_a.func_147297_a(payload);
Без понятия кто такой этот C17PacketCustomPayload, в импорте там net.minecraft.network.play.client.C17PacketCustomPayload, на 1.12 нашел тож самое только без 17 в названии, это то что мне нужно?
-
#6
Мой косяк, открыл версию для 1.7
Для 1.12:
ByteArrayOutputStream bo = new ByteArrayOutputStream();
DataOutputStream output = new DataOutputStream(bo);
PacketBuffer packetbuffer = new PacketBuffer(Unpooled.buffer());
packetbuffer.func_179250_a(bo.toByteArray());
CPacketCustomPayload cpl = new CPacketCustomPayload("ngguard", packetbuffer);
Minecraft.func_71410_x().field_71439_g.field_71174_a.func_147297_a((Packet)cpl);
-
#7
Вроде что то получилось, но такой вопрос, а зачем городить кучу кода, классов и прочего как в той теме, когда отправка и прием вместе занимают не больше 10 строк?
Последнее редактирование: 16 Июл 2020
-
#8
Для тех, кто наткнется на эту тему вот код, решающий мою проблему
Клиент:
ByteArrayOutputStream bo = new ByteArrayOutputStream();
bo.write("hello".getBytes("UTF-8"));
PacketBuffer packetbuffer = new PacketBuffer(Unpooled.buffer());
packetbuffer.writeBytes(bo.toByteArray());
CPacketCustomPayload payload = new CPacketCustomPayload("channelName", packetbuffer);
Minecraft.getMinecraft().player.connection.sendPacket(payload);
На сервере простой листенер:
@Override
public void onPluginMessageReceived(String channel, Player player, byte[] message) {
String msg = new String(message, StandardCharsets.UTF_8);
//do sth
}
p.s вместо String может быть другой тип данных
-
-
July 22 2022, 21:26
- IT
- Cancel
Хочу рассказать об ошибках, с которыми столкнулся при разработке веб-сервисов на 1С. Статью буду дополнять по мере получения опыта.
1. Это сообщение об ошибке при подключении к веб сервису из PHP.
[31-Mar-2013 05:32:02 UTC] PHP Fatal error: SOAP-ERROR: Parsing WSDL: Couldn’t load from ‘http://test.ru/test/ws/WebServices?wsdl’ : failed to load external entity
Данное сообщение говорит лишь о недоступности веб-сервера, на котором опубликована база. В этом случае попробуйте вручную вызвать http://test.ru/test/ws/WebServices?wsdl и убедиться, что WSDL формируется. Если не формируется, значит либо веб-сервер выключен, либо база опубликована по другому адресу или порту, либо блокирует фаервол. Могут быть и другие причины.
2. 02-Apr-2013 13:46:10 UTC] PHP Fatal error: Uncaught SoapFault exception: [HTTP] Error Fetching http headers in /home/users/b/test/domains/test.ru/testDIR/test.php:169
Эта ошибка возникает если WSDL возвращается с ошибкой. Есть несколько причин для этой ошибки:
- Несогласованность пространств имен в конфигурации. Например в ws-операции тип возвращаемого значения не соответствует типу из XDTO. Это может возникнуть при сменен URI пространства имен пакета XDTO.
- Возникает если в PHP включить кеш WSDL. Кеш запоминает WSDL и при каждом вызове веб-операции не запрашивает его, но если вы поменяли веб-сервис, то произойдет ошибка. Вообще, при разработке кеш стоит отключить, а если уже все работает то для скорости лучше включить. Ускорение при отключенном кеше заметное. Для примера скажу, что создание объекта SoapClient с выключенным кешем занимает примерно 2 сек, а с включенным — за сотые доли секунды. Отключить можно так:
ini_set(«soap.wsdl_cache_enabled», 0);
или
$client = new SoapClient(‘http://somewhere.com/?wsdl’, array(‘cache_wsdl’ => 0));
3. Ошибка SOAP сервера: Неизвестная ошибка. bad allocation.
Скорее всего недостаток оперативной памяти — проверьте запрос и результат вывода веб сервиса. Запрос может быть сложным, потому может быстро исчерпать оперативную память.

