Форум программистов, компьютерный форум, киберфорум
1С: Собственные программы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
1
1C 8.x

Отослать сообщение на почту

24.12.2015, 12:00. Просмотров 1702. Ответов 16
Метки нет (Все метки)

Подскажите как можно решить эту проблему
Я так понимаю в папки есть архив а в структуру он не добавлен из за этого выдает ошибку, как можно сделать чтобы отправились только те архивы которые прописаны в структуре

{Форма.Форма.Форма(702)}: Ошибка при вызове метода контекста (Добавить)
Сообщение.Вложения.Добавить(Файл + ?(Прав(Файл,1)="","","") + ФайлВложения);
по причине:
Ошибка доступа к файлу 'C:\Users\goga\Desktop\Реестры\Новая папка'


1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
    Профиль = Новый ИнтернетПочтовыйПрофиль;
    
    //Пропишем параметры соединения
    //ip адрес или имя SMTP сервера
    Профиль.АдресСервераSMTP = "192.168.2.50"; 
    
    //Порт SMTP сервера
    Профиль.ПортSMTP = 587;
    
    //Имя пользователя почтового ящика
    Профиль.Пользователь = "1234@mail.ru";
    
    //Пароль доступа к почтовому ящику
    Профиль.Пароль = "buh100_TA";
    
    //При необходимости добавляем аутентификацию
    Профиль.АутентификацияSMTP     = СпособSMTPАутентификации.Login;
    Профиль.ПарольSMTP           = "buh100_TA";
    Профиль.ПользовательSMTP     = "1234@mail.ru"; 
    
    // Создаем объект для работы с почтой
    Почта = Новый ИнтернетПочта;
    
    //Выполняем подключение, согласно указанный параметров
    Попытка
        Почта.Подключиться(Профиль);
    Исключение
        //При подключении возникла ошибка, сообщим
        Сообщить("Ошибка при подключении к серверу" + ОписаниеОшибки());
        Возврат;
    КонецПопытки;
    
    //Создаем новое письмо (сообщение)
    
    СоответствиеФайловАрхивам = Новый Соответствие;
    СоответствиеФайловАрхивам.Вставить("ptz.zip", Новый Структура("Архив, Отправитель","sberbank_ptz.zip", "78978@mail.ru"));
    СоответствиеФайловАрхивам.Вставить("ptz.zip", Новый Структура("Архив, Отправитель","sberbank_ptz.zip", "5675@mail.ru"));
    СоответствиеФайловАрхивам.Вставить("lah.zip", Новый Структура("Архив, Отправитель","sberbank_lah.zip", "234@mail.ru"));
 
    МассивФайлов = НайтиФайлы(Файл, "*.zip");
    
    Для каждого ТекущийФайл Из МассивФайлов Цикл
        Сообщение = Новый ИнтернетПочтовоеСообщение;
        ПолноеИмяФайл = СтрЗаменить(ТекущийФайл.Имя, "_",Символы.ПС);
        ПрефиксФайла = СтрПолучитьСтроку(ПолноеИмяФайл, 2);
        ПрефиксФайла = НРег(ПрефиксФайла);
        
        СтруктураАрхива = СоответствиеФайловАрхивам[ПрефиксФайла];
        Если СтруктураАрхива <> Неопределено Тогда
            
            ФайлВложения=СтруктураАрхива.Архив;
            АдресПолучателя=СтруктураАрхива.Отправитель;
            Сообщение.Получатели.Добавить(АдресПолучателя);
            
        КонецЕсли; 
 
        Сообщение.Вложения.Добавить(Файл + ?(Прав(Файл,1)="","","") + ФайлВложения);
        Сообщение.Тема = "Реестры" + " " + ТекущийФайл.Имя;
        Сообщение.Отправитель = "1234@mail.ru";
        Почта.Послать(Сообщение);
        Сообщить(ТекущийФайл.Имя + " " + "успешно отправлено на адрес:" + " " + СтруктураАрхива.Отправитель);
    
    КонецЦикла;
    
    Почта.Отключиться();
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.12.2015, 12:00
Ответы с готовыми решениями:

Отослать сообщении о свободном месте на почту по расписанию
помогите пожалуйста слабому полу написать скрипт,очень прошу:help: Спланировать задание,...

Обработка формы заказа: отослать анкету на почту
Добрый день столкнулся с такой проблемой. Пытался сам что то сделать нужно на сайте сделать чтобы...

Как с помощью CDONTS отослать с сайта почту в формате HTML?
Как с помощю CDONTS отослать с саита почту в формате HTML. Пробовал ставить...

Отослать сообщение всем из бд
Всем доброго времени суток. Есть задание разослать пользователем из бд сообщение. В бд есть...

__________________

Записывайтесь на профессиональные курсы 1C-разработчиков
16
10 / 10 / 1
Регистрация: 04.05.2011
Сообщений: 143
24.12.2015, 13:51 2
Цитата Сообщение от Ermak27 Посмотреть сообщение
Ошибка доступа к файлу 'C:\Users\goga\Desktop\Реестры\Новая папка'
Может просто доступа нет к файлам?

А этот код:

1C
1
2
3
4
5
Сообщение.Вложения.Добавить(Файл + ?(Прав(Файл,1)="","","") + ФайлВложения);
        Сообщение.Тема = "Реестры" + " " + ТекущийФайл.Имя;
        Сообщение.Отправитель = "1234@mail.ru";
        Почта.Послать(Сообщение);
        Сообщить(ТекущийФайл.Имя + " " + "успешно отправлено на адрес:" + " " + СтруктураАрхива.Отправитель);
может надо ставить в условие?
0
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
24.12.2015, 15:09  [ТС] 3
Напосарам, в какое например?
0
10 / 10 / 1
Регистрация: 04.05.2011
Сообщений: 143
24.12.2015, 15:32 4
Ermak27, ну условие у тебя только одно. На сколько я понял, письмо должно отправляться тогда когда "СтруктураАрхива" не равно Неопределено и тогда нам будет известно значение "ФайлВложения"
Цитата Сообщение от Ermak27 Посмотреть сообщение
ФайлВложения=СтруктураАрхива.Архив;
а у тебя в коде получается что если "СтруктураАрхива = Неопределено", то без определения сразу пытаемся вложить файл "ФайлВложения", а "ФайлВложения" неопределен. Если закомментировать строку:

1C
1
Сообщение.Вложения.Добавить(Файл + ?(Прав(Файл,1)="","","") + ФайлВложения);
то будет ругаться, что не указан получатель при отправке.
0
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
24.12.2015, 15:49  [ТС] 5
Напосарам, если за комментировать тогда выдаст ошибку

{Форма.Форма.Форма(706)}: Ошибка при вызове метода контекста (Послать)
Почта.Послать(Сообщение);
по причине:
Не указан ни один получате
0
Модератор
Эксперт 1С
3055 / 2749 / 515
Регистрация: 10.03.2011
Сообщений: 10,550
Записей в блоге: 1
24.12.2015, 15:51 6
Цитата Сообщение от Напосарам Посмотреть сообщение
то будет ругаться, что не указан получатель при отправке.
Цитата Сообщение от Ermak27 Посмотреть сообщение
Не указан ни один получате
сбылось предсказание
0
10 / 10 / 1
Регистрация: 04.05.2011
Сообщений: 143
24.12.2015, 15:56 7
Надо так:


1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
 
Н = 0;
Для каждого ТекущийФайл Из МассивФайлов Цикл
        Н = Н + 1;
        Сообщение = Новый ИнтернетПочтовоеСообщение;
        ПолноеИмяФайл = СтрЗаменить(ТекущийФайл.Имя, "_",Символы.ПС);
        ПрефиксФайла = СтрПолучитьСтроку(ПолноеИмяФайл, 2);
        ПрефиксФайла = НРег(ПрефиксФайла);
        
        СтруктураАрхива = СоответствиеФайловАрхивам[ПрефиксФайла];
        Если СтруктураАрхива <> Неопределено Тогда
            
            ФайлВложения=СтруктураАрхива.Архив;
            АдресПолучателя=СтруктураАрхива.Отправитель;
            Сообщение.Получатели.Добавить(АдресПолучателя);
            Сообщение.Вложения.Добавить(Файл + ?(Прав(Файл,1)="","","") + ФайлВложения);
            Сообщение.Тема = "Реестры" + " " + ТекущийФайл.Имя;
            Сообщение.Отправитель = "1234@mail.ru";
            Почта.Послать(Сообщение);
            Сообщить(ТекущийФайл.Имя + " " + "успешно отправлено на адрес:" + " " + СтруктураАрхива.Отправитель);
        Иначе
            Сообщить("Ошибка, при отправки письма номер " + Н);
        КонецЕсли; 
 
    
    
    КонецЦикла;
1
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
24.12.2015, 16:02  [ТС] 8
Dethmontt, чем смеяться лучше бы подсказали
0
10 / 10 / 1
Регистрация: 04.05.2011
Сообщений: 143
24.12.2015, 16:03 9
Ermak27, ну так я что делаю? я же написал куда вставить надо.
0
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
24.12.2015, 16:07  [ТС] 10
Напосарам, Выдала ошибку

Ошибка, при отправки письма номер 1
Ошибка, при отправки письма номер 2
Ошибка, при отправки письма номер 3
sberbank_ptz.zip успешно отправлено на адрес: 5675@mail.ru
Ошибка, при отправки письма номер 5
Ошибка, при отправки письма номер 6

А должен был отправить еще на адрес 78978@mail.ru, так как архив один и тот же что и на этот адрес 5675@mail.ru, в структуре так прописано. Почему тогда не послал?
0
10 / 10 / 1
Регистрация: 04.05.2011
Сообщений: 143
24.12.2015, 16:18 11
Ermak27, а что делают эти строки, чет я не понял?

1C
1
2
3
ПолноеИмяФайл = СтрЗаменить(ТекущийФайл.Имя, "_",Символы.ПС);
        ПрефиксФайла = СтрПолучитьСтроку(ПолноеИмяФайл, 2);
        ПрефиксФайла = НРег(ПрефиксФайла);
0
Модератор
Эксперт 1С
3055 / 2749 / 515
Регистрация: 10.03.2011
Сообщений: 10,550
Записей в блоге: 1
24.12.2015, 16:19 12
Цитата Сообщение от Ermak27 Посмотреть сообщение
СоответствиеФайловАрхивам = Новый Соответствие;
* * СоответствиеФайловАрхивам.Вставить("ptz.zip", Новый Структура("Архив, Отправитель","sberbank_ptz.zip", "78978@mail.ru"));
* * СоответствиеФайловАрхивам.Вставить("ptz.zip", Новый Структура("Архив, Отправитель","sberbank_ptz.zip", "5675@mail.ru"));
* * СоответствиеФайловАрхивам.Вставить("lah.zip", Новый Структура("Архив, Отправитель","sberbank_lah.zip", "234@mail.ru"));
Потому что вот это ЛАЖА!!!

Добавлено через 1 минуту
В "СоответствиеФайловАрхивам" будет всего две записи

1C
1
2
СоответствиеФайловАрхивам.Вставить("ptz.zip", Новый Структура("Архив, Отправитель","sberbank_ptz.zip", "5675@mail.ru"));
СоответствиеФайловАрхивам.Вставить("lah.zip", Новый Структура("Архив, Отправитель","sberbank_lah.zip", "234@mail.ru"));
Первая вставка:
1C
1
СоответствиеФайловАрхивам.Вставить("ptz.zip", Новый Структура("Архив, Отправитель","sberbank_ptz.zip", "78978@mail.ru"));
Перезатирается НИЖЕ
1C
1
СоответствиеФайловАрхивам.Вставить("ptz.zip", Новый Структура("Архив, Отправитель","sberbank_ptz.zip", "5675@mail.ru"));
1
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
24.12.2015, 16:23  [ТС] 13
Dethmontt, а как тогда сделать чтобы отправлял на два адреса?
0
Модератор
Эксперт 1С
3055 / 2749 / 515
Регистрация: 10.03.2011
Сообщений: 10,550
Записей в блоге: 1
24.12.2015, 16:28 14
Лучший ответ Сообщение было отмечено Ermak27 как решение

Решение

1C
1
СоответствиеФайловАрхивам.Вставить("ptz.zip", Новый Структура("Архив, Отправитель","sberbank_ptz.zip", "78978@mail.ru"));
1C
1
2
3
4
Получатели = Новый Массив;
Получатели.Добавить("78978@mail.ru");
Получатели.Добавить("5675@mail.ru");
СоответствиеФайловАрхивам.Вставить("ptz.zip", Новый Структура("Архив, Отправитель","sberbank_ptz.zip", Получатели));
1C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Если СтруктураАрхива <> Неопределено Тогда
            
            ФайлВложения=СтруктураАрхива.Архив;
            АдресПолучателя=СтруктураАрхива.Отправитель;
            //Отправление нескольким получателям
            Для каждого Получатель из СтруктураАрхива.Отправитель Цикл
                Сообщение.Получатели.Добавить(Получатель);
            КонецЦикла;
            Сообщение.Вложения.Добавить(Файл + ?(Прав(Файл,1)="","","") + ФайлВложения);
            Сообщение.Тема = "Реестры" + " " + ТекущийФайл.Имя;
            Сообщение.Отправитель = "1234@mail.ru";
            Почта.Послать(Сообщение);
            Сообщить(ТекущийФайл.Имя + " " + "успешно отправлено на адрес:" + " " + СтруктураАрхива.Отправитель);
        Иначе
            Сообщить("Ошибка, при отправки письма номер " + Н);
        КонецЕсли;
Добавлено через 1 минуту
Ну и это нужно переделать

1C
1
СоответствиеФайловАрхивам.Вставить("lah.zip", Новый Структура("Архив, Отправитель","sberbank_lah.zip", "234@mail.ru"));
1C
1
2
3
Получатели2 = Новый Массив;
Получатели2.Добавить("234@mail.ru");
СоответствиеФайловАрхивам.Вставить("lah.zip", Новый Структура("Архив, Отправитель","sberbank_lah.zip", Получатели2));
Добавлено через 2 минуты

Не по теме:

Ermak27, когда ты уже научишься сам думать?

1
4 / 4 / 0
Регистрация: 16.01.2013
Сообщений: 1,228
24.12.2015, 16:32  [ТС] 15
Dethmontt, спасибо большое! Вот учусь
0
10 / 10 / 1
Регистрация: 04.05.2011
Сообщений: 143
24.12.2015, 16:33 16
Ermak27,

и вот это

1C
1
2
3
4
 
        ПолноеИмяФайл = СтрЗаменить(ТекущийФайл.Имя, "_",Символы.ПС);
        ПрефиксФайла = СтрПолучитьСтроку(ПолноеИмяФайл, 2);
        ПрефиксФайла = НРег(ПрефиксФайла);
я бы заменил на это:

1C
1
ПрефиксФайла =  Сред(ТекущийФайл.Имя, СтрНайти(ТекущийФайл.Имя, "_") + 1)
ну это чисто мое мнение.
0
Модератор
Эксперт 1С
3055 / 2749 / 515
Регистрация: 10.03.2011
Сообщений: 10,550
Записей в блоге: 1
24.12.2015, 16:50 17
Цитата Сообщение от Напосарам Посмотреть сообщение
я бы заменил на это:

Не по теме:

Я бы заменил весь этот КОД и автора этого КОДа - тоже чисто мое мнение :D

0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.12.2015, 16:50

Заказываю контрольные, курсовые, дипломные работы и диссертации здесь.

Отослать сообщение через viber
Использую программу Tasker для автоматизации некоторых задач. Подскажите, как можно отправить...

IdSMTP, отослать сообщение без учетной записи
Добрый день. Нужно реализовать приложение, которое будет слать сообщение на почту мыла.ру. ...

Как можно работать с почтой в Worde (отослать, принять сообщение)?
Есть задачка - отослать по почте из Worda какой-либо текст (активный документ или нет - неважно)....

Как отослать текстовое сообщение другому приложению. .SendMessage. WM_COPYDATA. Delphi
Всем привет. Есть такая программа, отправляющая текстовое сообщение другой программе через...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.