Имя: Пароль:
1C
1С v8
1С и почта
0 Omskdizel
 
20.01.22
08:41
Доброго дня!
Есть задачка делать рассылку актов сверок из УТ 10.3 с одним особым пожеланием - надо отправлять письма так, чтобы они сохранялись в папке "Отправленные" в почтовом ящике.
Через SMTP письма прекрасно уходят, но в ящике их нет. Через IMAP не получается отправить, ругается, что не установлено соединение с IMAP. Тут явно дело в подключении, но вроде все параметры указал, а соединение не устанавливается. Идея была в использовании третьего параметра метода Послать() объекта ИнтернетПочта. Когда ставлю третьим параметром использование IMAP, мне идет ответ "Данная операция не может быть выполнена, не установлено соединение IMAP". Можно, конечно, отправлять и адресату и себе сразу, но это костыльно как-то, да и с почтой потом разбираться неудобно, не будет цепочек писем. Почта Яндекс.
1 Azverin
 
20.01.22
08:50
(0) Помню я в УПП 1.3 года 3 назад прикручивал IMAP - его там не было.
Так что, в УТ 10.3 может тупо отсутствовать.
2 Omskdizel
 
20.01.22
08:55
(1) Я вот грешу на режим совместимости. И убрать его не рискну. Хотя щас из-под БП 3.0 попробую, чет я тупанул.
3 nodrama
 
20.01.22
09:00
(2) в УПП 1.3 imap нету. в УТ 10.3 скорее всего то же.
Но если отправлять не через аля Яндекс, а допустим через outlook из 1с упп, то в отправленных все сохраняется. сами так отправляем.
Возможно нужно поставить какой нибудь почтовый клиент на комп/сервер, соеденить его с тем же яндексом или через что вы там отправляете. и отправлять через него. возможно тогда в отправленных что то будет)
4 nodrama
 
20.01.22
09:03
из БП 3.0 отправляли через яндекс напрямую, в отправленных 100% все было, если что)
5 Omskdizel
 
20.01.22
09:06
Вы не поверите :) Щас таки отправил из УТ, но в почте отправителе письмо вывалилось во Входящие! Я даже ржанул малость... Щас БП потестю...
6 nodrama
 
20.01.22
09:13
(4) из УПП отправляли штатными средствами (через учетные данные почты), исходящие были в УПП, то есть в почте не было, но в упп можно было посмотреть исходящие письма.
Через отлук, не штатными средствами проблем нет, в отлуке в исходящих все сохраняется. Поэтому я больше чем уверен если на комп поставить почтовый клиент и его соеденить с яндексом и из УТ отправить через этот почтовый клиент, то и на почтовом клиенте и в яндексе в отправленных письма будут.
БП 3.0 письма отправляли через яндекс проблем "0". в отправленных оставались.
А то что из УТ в яндексе попали во входящие.. это вообще странно не понятно как их тогда получил получатель)
7 Omskdizel
 
20.01.22
09:20
Такс... Видимо что-то я делаю не так... В БП 3.0 то же поведение.
Вот собсно код:

ПараметрыПочты = новый ИнтернетПочтовыйПрофиль;

ПараметрыПочты.АдресСервераSMTP = "smtp.yandex.ru";
ПараметрыПочты.АутентификацияSMTP = СпособSMTPАутентификации.Login;
ПараметрыПочты.ИспользоватьSSLSMTP = Истина;
ПараметрыПочты.ПортSMTP = 465;
ПараметрыПочты.ПользовательSMTP = "Почта";
ПараметрыПочты.ПарольSMTP = "Пароль";

ПараметрыПочты.АдресСервераIMAP = "imap.yandex.ru";
ПараметрыПочты.ИспользоватьSSLIMAP = Истина;
ПараметрыПочты.ПортIMAP = 993;
ПараметрыПочты.ПользовательIMAP = "Почта";
ПараметрыПочты.ПарольIMAP = "Пароль";

ПараметрыПочты.ТолькоЗащищеннаяАутентификацияIMAP = Ложь;

Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Тема = "Test";
Письмо.ИмяОтправителя = "Сила механика";
Письмо.Отправитель = "Почта";
Письмо.Получатели.Добавить("Получатель");
Письмо.Тексты.Добавить("");

Подключение = Новый ИнтернетПочта;
Попытка
    Подключение.Подключиться(ПараметрыПочты, ПротоколИнтернетПочты.IMAP);
    Подключение.Послать(Письмо,, ПротоколИнтернетПочты.IMAP);
    //Подключение.Послать(Письмо);

Исключение
    Сообщить("Письмо не отправлено" + ОписаниеОшибки());
КонецПопытки;    

Что я делаю не так?
8 Omskdizel
 
20.01.22
09:27
Я сделал это!
Надо после подключения указать, с какой папкой работаем. По умолчанию идут "Входящие". Пишем Подключение.ТекущийПочтовыйЯщик = "Отправленные"; и готово. То есть почтовый сервер свои правила не применяет при работе через IMAP, ему пофиг, отправлял ты письмо или нет, какой ящик укажешь - туда и положит...
Спасибо всем за помощь!
9 Omskdizel
 
20.01.22
09:28
(6) Через почтовую программу неудобно. Неведомо где будут открывать обработку. На все компы ставить клиента не комильфо...
10 covox
 
20.01.22
09:28
Будет удивительно, если это получится.
imap только для приема
https://ru.wikipedia.org/wiki/IMAP
Для отправки писем используется обычно протокол SMTP, так как собственная команда отправки протокола IMAP, называемая APPEND, не содержит в себе механизма передачи служебной информации[1].
11 Fram
 
20.01.22
09:39
(8) Получателю через smtp не забудьте тоже отправить. А то в отправленные положите, а адресату не отправите.
12 Omskdizel
 
20.01.22
09:41
(11) Оно каким-то непонятным образом отправляется. Ну то есть я же пишу Послать(), оно посылает и еще запихивает в нужный ящик. Я не делаю отдельных команд на помещение письма в нужный ящик.
13 Fram
 
20.01.22
09:43
(12) точно отправляется?.. Че то я сомневаюсь
14 Fram
 
20.01.22
09:46
Интересно что будет если в Исходящие закинуть через imap
15 Omskdizel
 
20.01.22
10:12
(13) Я не знаю, как это работает, но перестало отправляться. Надо две команды Послать(). Вы правильно сомневались :)
(14) Делал. Показывается (не создается, до этого писал папку как OUTBOX и Яндекс меня послал) папка Исходящие. В ней торчит письмо. При этом даже не пытается отправиться :)
16 Omskdizel
 
20.01.22
10:17
Для поисковиков.
Как отправить письмо программно так, чтобы оно осталось в папке отправленных писем почты отправителя.

ПараметрыПочты = Новый ИнтернетПочтовыйПрофиль;

// Данные SMTP
ПараметрыПочты.АдресСервераSMTP = "smtp.yandex.ru";
ПараметрыПочты.АутентификацияSMTP = СпособSMTPАутентификации.Login;
ПараметрыПочты.ИспользоватьSSLSMTP = Истина;
ПараметрыПочты.ПортSMTP = 465;
ПараметрыПочты.ПользовательSMTP = Логин;
ПараметрыПочты.ПарольSMTP = Пароль;

// Данные IMAP
ПараметрыПочты.АдресСервераIMAP = "imap.yandex.ru";
ПараметрыПочты.ИспользоватьSSLIMAP = Истина;
ПараметрыПочты.ПортIMAP = 993;
ПараметрыПочты.ПользовательIMAP = Логин;
ПараметрыПочты.ПарольIMAP = Пароль;

// Само письмо
Письмо = Новый ИнтернетПочтовоеСообщение;
Письмо.Тема = "Test";
Письмо.ИмяОтправителя = ИмяОтправителя;
Письмо.Отправитель = Отправитель;
Письмо.Получатели.Добавить(Получатель);
Письмо.Тексты.Добавить("");
//Письмо.Вложения.Добавить(Вложение);

Подключение = Новый ИнтернетПочта;
Попытка
    Подключение.Подключиться(ПараметрыПочты, ПротоколИнтернетПочты.IMAP); // Подключаемся
    Подключение.ТекущийПочтовыйЯщик = "Отправленные"; // Выбираем нужную папку, ибо по умолчанию стоит папка Входящие
    Подключение.Послать(Письмо,, ПротоколИнтернетПочты.IMAP); // Закидываем письмо в папку в своей почте
    Подключение.Послать(Письмо); // Отправляем его же получателям по SMTP
Исключение
    Сообщить("Письмо не отправлено" + ОписаниеОшибки());
КонецПопытки;    

17 ДенисЧ
 
20.01.22
10:18
(16) Может быть ошибка, иногда "Отправленные" представляются как "Sent"
18 Garykom
 
гуру
20.01.22
10:20
яндекс у себя что то изменил и теперь отправленные из внешних программ не сохраняются
19 Garykom
 
гуру
20.01.22
10:22
(18)+ неважно smtp или imap отправка

выхода два:
1. Поменять яндекс на другой
2. Извращенно посылать (с тормозами да) письмо себе в скрытой копии, настроить правило перекладывания в папку Отправленные
20 Garykom
 
гуру
20.01.22
10:23
(19)+ хотя забыл
3. Смириться
21 ДенисЧ
 
20.01.22
10:25
(20) 4. Поднять свой почтовый сервер...
22 Fram
 
20.01.22
10:25
(16) я бы поменял местами Послать. Сначала получателю, и если без ошибок пройдёт, в Отправленные
23 Garykom
 
гуру
20.01.22
10:29
(21) стареешь?

п.1 "Поменять яндекс на другой" включает уже "Поднять свой почтовый сервер"
24 ДенисЧ
 
20.01.22
10:30
(23) "Поменять яндекс на другой" может предполагать гугель. Или ещё кого.
А я имею в виду локохост.
25 Omskdizel
 
20.01.22
10:30
(20) В (16) вполне рабочий код.
26 Garykom
 
гуру
20.01.22
10:30
(22) зачем когда можно в скрытой копии сразу?
27 Garykom
 
гуру
20.01.22
10:31
(24) другой это значит просто другой
хоть гугель хоть локалхост
28 Omskdizel
 
20.01.22
11:03
(22) Да, логично. Вероятность не отправить на другой адрес почту много выше вероятности не засунуть в свой же почтовый ящик свои данные.
29 Omskdizel
 
20.01.22
11:05
Однако все равно бестолковая задача. По сути это разные письма, с точки зрения сервера и ответ на него в цепочку не преобразуется. Чтобы было по феншую, надо именно отправлять посредством IMAP.
30 ДенисЧ
 
20.01.22
11:09
(29) Через IMAP ты ничего не отправишь. Отправляются письма по SMTP.
31 Omskdizel
 
20.01.22
11:15
(30) Ну, технически, глядя на описание протокола, там есть методы для отправки (APPEND). Просто исторически, этот метод не допилили до промышленной эксплуатации.
Альтернативой могло бы быть API провайдера, но именно для почты у Яндекса API нет.