Форум программистов, компьютерный форум, киберфорум
Наши страницы
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
fenlork
1 / 1 / 0
Регистрация: 26.07.2013
Сообщений: 69
1

Отправка письма на запланированную дату

14.08.2013, 16:01. Просмотров 970. Ответов 8
Метки нет (Все метки)

Стоит такая задача-для контроля сроков -предупреждать пользователем письмом на ящик на запланированные даты. Т.Е один раз ввел-например в обработке дату-привязав к сотруднику. и КОГДА наступит ЭТА дата-чтобы отправилось письмецо с предупреждением. Возможно ли это?-например
1C
1
ПодключитьОбработчикОжидания();
-вот что уже наработано-
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
Процедура КнопкаВыполнитьНажатие(Кнопка)
    //за месяц
    МесяцХ=добавитьмесяц(датакон,-1);
    //сообщить("МесяцХ"+месяцХ);
    //в день
    ДеньХ=началоДня(датакон);
    //сообщить("ДеньХ"+деньХ);
    //Если месяцх=истина тогда
    ИПП = Новый ИнтернетПочтовыйПрофиль;
    ИПП.АдресСервераSMTP = "smtp.rambler.ru";
    ИПП.ПарольSMTP = "*****";
    ИПП.ПользовательSMTP = "dgj29@rambler.ru";
    ИПП.ПортSMTP =  587;
    ИПП.АутентификацияSMTP = СпособSMTPАутентификации.Login;
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Получатели.Добавить("dgj29@yandex.ru");
    Сообщение.Отправитель.Адрес = "dgj29@rambler.ru";
    Сообщение.Тема = "Предупреждение!";
    Сообщение.Тексты.Добавить("Истекает срок действия регистрации");
    
    Почта = Новый ИнтернетПочта;
    Попытка
    Почта.Подключиться(ИПП);
    Сообщить("Подключенено");
    Почта.Послать(Сообщение);
    Сообщить("Письмо отправлено");
    Исключение
        Сообщить(ОписаниеОшибки());
        Сообщить("Письмо не отправлено!!!");
        Возврат;
        КонецПопытки;
    Почта.Отключиться();
//конецесли;
//Если деньХ=истина тогда
ИПП = Новый ИнтернетПочтовыйПрофиль;
    ИПП.АдресСервераSMTP = "smtp.rambler.ru";
    ИПП.ПарольSMTP = "251191";
    ИПП.ПользовательSMTP = "dgj29@rambler.ru";
    ИПП.ПортSMTP =  587;
    ИПП.АутентификацияSMTP = СпособSMTPАутентификации.Login;
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Получатели.Добавить("dgj29@yandex.ru");
    Сообщение.Отправитель.Адрес = "dgj29@rambler.ru";
    Сообщение.Тема = "Предупреждение!";
    Сообщение.Тексты.Добавить("Конец срока регистрации");
    
    Почта = Новый ИнтернетПочта;
    Попытка
    Почта.Подключиться(ИПП);
    Сообщить("Подключенено");
    Почта.Послать(Сообщение);
    Сообщить("Письмо отправлено");
    Исключение
        Сообщить(ОписаниеОшибки());
        Сообщить("Письмо не отправлено!!!");
        Возврат;
        КонецПопытки;
    Почта.Отключиться();
    //конецесли;
    
 
КонецПроцедуры
 
Процедура СотрудникПриИзменении(Элемент)
    сотрудник=этотобъект.Сотрудник;
            
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   Иностранцы.ДатаКон
        |ИЗ
        |   Справочник.Иностранцы КАК Иностранцы
        |ГДЕ
        |   Иностранцы.Ссылка = &Ссылка";
 
    Запрос.УстановитьПараметр("ссылка",сотрудник);
 
    Результат = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
 
    Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
                датакон=ВыборкаДетальныеЗаписи.датакон;
    КонецЦикла;
     этотобъект.ДатаКон=датакон;
 
КонецПроцедуры
0
Миниатюры
Отправка письма на запланированную дату  
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
14.08.2013, 16:01
Ответы с готовыми решениями:

КА 1.1 отправка письма
Вопрос такого рода. Есть документ (Не типовой), исправно работающий, хотелось бы добавить...

Отправка письма php. Письма со скрипта на локальном сервере (Denwer) не приходят на почту.
Доброго Времени Суток!!! Я запускаю Денвером php скрипт со следующим кодом <?php $name=$_GET;...

Отправка письма большому кол-ву адресатов в одном письма(код почему-то не верно работает)
Добрый вечер! Имеется готовый макрос для отправки файла, который перед этим выгружает в...

Добавить дату к теме письма
добрый день, уважаемые форумчане! есть необходимость немного модифицировать такую строку...

Отправка письма
В общем , необходимо отправлять возможностями c# e-mail. Перепробовал тучу кодов но все выдают...

8
Joker_vad
Эксперт 1С
473 / 411 / 92
Регистрация: 26.09.2012
Сообщений: 1,841
14.08.2013, 16:22 2
Режим работы базы какой?
0
fenlork
1 / 1 / 0
Регистрация: 26.07.2013
Сообщений: 69
14.08.2013, 16:43  [ТС] 3
файловый
0
Joker_vad
Эксперт 1С
473 / 411 / 92
Регистрация: 26.09.2012
Сообщений: 1,841
14.08.2013, 16:47 4
Да. можешь делать с такими наработками все должно получиться
0
14.08.2013, 16:47
fenlork
1 / 1 / 0
Регистрация: 26.07.2013
Сообщений: 69
14.08.2013, 16:54  [ТС] 5
Не понимаю как он работает(и куда его вставить

Добавлено через 3 минуты
В ставить в глобальный модуль в процедуру ПриНачалеРаботыСистемы()?
0
Joker_vad
Эксперт 1С
473 / 411 / 92
Регистрация: 26.09.2012
Сообщений: 1,841
14.08.2013, 16:58 6
ну мб как то регламентные задания прикрутить

Добавлено через 48 секунд
Которые будут проверять совпадает ли текущая дата, с тем то ты задал и если совпадает отправлять письмо
0
Fenomen
899 / 876 / 8
Регистрация: 15.03.2012
Сообщений: 2,680
14.08.2013, 19:18 7
fenlork, сделайте регламентное задание, которое будет выбирать все отправки за сегодня и делать рассылку. Нужно учесть, что в файлом варианте для работы рег. заданий должен быть запущен экземпляр 1С по специальным пользователем.
Посмотреть реализацию работы рег. заданий в файловом режиме можно в типовых конфигурациях.
1
fenlork
1 / 1 / 0
Регистрация: 26.07.2013
Сообщений: 69
15.08.2013, 20:39  [ТС] 8
немного изменилась постановка задачи. Данные о ФизЛице и сроке окончания его регистрации беруться из РС, потом отсылаются на почту предупреждения за за месяц о оканчания лицензии и за день по такому то ФизЛицу.
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
Процедура КнопкаВыполнитьНажатие(Кнопка)
//выборка данных из рс  
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   СрокОкончанияЛицензийСрезПоследних.Получатель,
        |   СрокОкончанияЛицензийСрезПоследних.ФизЛицо,
        |   СрокОкончанияЛицензийСрезПоследних.СрокОкончанияЛицензии,
        |   КонтактнаяИнформация.Объект.Ссылка,
        |   КонтактнаяИнформация.Представление КАК мыло
        |ИЗ
        |   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        |       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СрокОкончанияЛицензий.СрезПоследних(&пер, ) КАК СрокОкончанияЛицензийСрезПоследних
        |       ПО КонтактнаяИнформация.Объект.Ссылка = СрокОкончанияЛицензийСрезПоследних.Получатель
        |ГДЕ
        |   КонтактнаяИнформация.Тип = &Тип
        |   И КонтактнаяИнформация.Вид = &Вид";
 
    Запрос.УстановитьПараметр("пер",текущаядата());
    запрос.УстановитьПараметр("тип",Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
    запрос.УстановитьПараметр("вид",Справочники.ВидыКонтактнойИнформации.EmailФизЛица);
    Результат = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
     
     Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Получатель=ВыборкаДетальныеЗаписи.мыло;
        срокОкончанияЛицензии=ВыборкаДетальныеЗаписи.срокОкончанияЛицензии;
        Физлицо=ВыборкаДетальныеЗаписи.Физлицо;
          //
    МесяцХ=добавитьмесяц(СрокОкончанияЛицензии,-1);
   ДеньХ=началоДня((СрокОкончанияЛицензии)-1);
   если (началоДня(текущаяДата())=месяцХ) тогда
    ИПП = Новый ИнтернетПочтовыйПрофиль;
    ИПП.АдресСервераSMTP = "smtp.rambler.ru";
    ИПП.ПарольSMTP = "*****";
    ИПП.ПользовательSMTP = "dgj29@rambler.ru";
    ИПП.ПортSMTP =  587;
    ИПП.АутентификацияSMTP = СпособSMTPАутентификации.Login;
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Получатели.Добавить(Получатель);
    Сообщение.Отправитель.Адрес = "dgj29@rambler.ru";
    Сообщение.Тема = "Предупреждение!";
    Сообщение.Тексты.Добавить("Истекает срок действия регистрации у"+строка(Физлицо));
    
    Почта = Новый ИнтернетПочта;
    Попытка
    Почта.Подключиться(ИПП);
    Сообщить("Подключено");
    Почта.Послать(Сообщение);
    Сообщить("Письмо отправлено");
    Исключение
        Сообщить(ОписаниеОшибки());
        Сообщить("Письмо не отправлено!!!");
        Возврат;
        КонецПопытки;
    Почта.Отключиться();
иначе
    сообщить("Месяц не подходит");
конецЕсли;
Если (началоДня(текущаяДата())=деньХ) тогда
ИПП = Новый ИнтернетПочтовыйПрофиль;
    ИПП.АдресСервераSMTP = "smtp.rambler.ru";
    ИПП.ПарольSMTP = "*****";
    ИПП.ПользовательSMTP = "dgj29@rambler.ru";
    ИПП.ПортSMTP =  587;
    ИПП.АутентификацияSMTP = СпособSMTPАутентификации.Login;
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Получатели.Добавить(получатель);
    Сообщение.Отправитель.Адрес = "dgj29@rambler.ru";
    Сообщение.Тема = "Предупреждение!";
    Сообщение.Тексты.Добавить("Конец срока регистрации"+строка(Физлицо));
    
    Почта = Новый ИнтернетПочта;
    Попытка
    Почта.Подключиться(ИПП);
    Сообщить("Подключено");
    Почта.Послать(Сообщение);
    Сообщить("Письмо отправлено");
    Исключение
        Сообщить(ОписаниеОшибки());
        Сообщить("Письмо не отправлено!!!");
        Возврат;
        КонецПопытки;
    Почта.Отключиться();
    
иначе 
    сообщить("День не подходит");
    конецЕсли;
 
    КонецЦикла;
 
КонецПроцедуры
Добавлено через 5 минут
Проблема в том, что если на текущую дату-у двух и более ФизЛиц заканчивается срок лицензии-то так и отправляется по каждому одно письмо. А хочеться, чтобы всех ФизЛиц отослали в одном письме. Чего то напутал в цикле.. и надо куда то вставить условие, не отправлять пустых писем.Прошу ткнуть на ошибку
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
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
Процедура КнопкаВыполнитьНажатие(Кнопка)
//выборка данных из рс  
    Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ
        |   СрокОкончанияЛицензийСрезПоследних.Получатель,
        |   СрокОкончанияЛицензийСрезПоследних.ФизЛицо,
        |   СрокОкончанияЛицензийСрезПоследних.СрокОкончанияЛицензии,
        |   КонтактнаяИнформация.Объект.Ссылка,
        |   КонтактнаяИнформация.Представление КАК мыло
        |ИЗ
        |   РегистрСведений.КонтактнаяИнформация КАК КонтактнаяИнформация
        |       ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.СрокОкончанияЛицензий.СрезПоследних(&пер, ) КАК СрокОкончанияЛицензийСрезПоследних
        |       ПО КонтактнаяИнформация.Объект.Ссылка = СрокОкончанияЛицензийСрезПоследних.Получатель
        |ГДЕ
        |   КонтактнаяИнформация.Тип = &Тип
        |   И КонтактнаяИнформация.Вид = &Вид";
 
    Запрос.УстановитьПараметр("пер",текущаядата());
    запрос.УстановитьПараметр("тип",Перечисления.ТипыКонтактнойИнформации.АдресЭлектроннойПочты);
    запрос.УстановитьПараметр("вид",Справочники.ВидыКонтактнойИнформации.EmailФизЛица);
    Результат = Запрос.Выполнить();
 
    ВыборкаДетальныеЗаписи = Результат.Выбрать();
      СписокА=""; СписокБ="";
     Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Получатель=ВыборкаДетальныеЗаписи.мыло;
        срокОкончанияЛицензии=ВыборкаДетальныеЗаписи.срокОкончанияЛицензии;
        Физлицо=ВыборкаДетальныеЗаписи.Физлицо;
        МесяцХ=добавитьмесяц(СрокОкончанияЛицензии,-1);
        ДеньХ=началоДня((СрокОкончанияЛицензии)-1);
        
        
        
        Если (началоДня(текущаяДата())=месяцХ) тогда
            СписокА=(СписокА+Строка(ФизЛицо));
        
        конецЕсли;
        Если (началоДня(текущаяДата())=деньХ) тогда
            СписокБ=(СписокБ+Строка(ФизЛицо));
        
        КонецЕсли;
        КонецЦикла;
    
    ИПП = Новый ИнтернетПочтовыйПрофиль;
    ИПП.АдресСервераSMTP = "smtp.rambler.ru";
    ИПП.ПарольSMTP = "*****";
    ИПП.ПользовательSMTP = "dgj29@rambler.ru";
    ИПП.ПортSMTP =  587;
    ИПП.АутентификацияSMTP = СпособSMTPАутентификации.Login;
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Получатели.Добавить(получатель);
    Сообщение.Отправитель.Адрес = "dgj29@rambler.ru";
    Сообщение.Тема = "Предупреждение!";
    Сообщение.Тексты.Добавить("Конец срока регистрации"+СписокА);
    Почта = Новый ИнтернетПочта;
    Попытка
    Почта.Подключиться(ИПП);
    Сообщить("Подключено");
    Почта.Послать(Сообщение);
    Сообщить("Письмо отправлено");
    Исключение
        Сообщить(ОписаниеОшибки());
        Сообщить("Письмо не отправлено!!!");
        Возврат;
        КонецПопытки;
    Почта.Отключиться();
    //иначе 
    //сообщить("День не подходит");
    
    
  ИПП = Новый ИнтернетПочтовыйПрофиль;
    ИПП.АдресСервераSMTP = "smtp.rambler.ru";
    ИПП.ПарольSMTP = "*****";
    ИПП.ПользовательSMTP = "dgj29@rambler.ru";
    ИПП.ПортSMTP =  587;
    ИПП.АутентификацияSMTP = СпособSMTPАутентификации.Login;
    Сообщение = Новый ИнтернетПочтовоеСообщение;
    Сообщение.Получатели.Добавить(Получатель);
    Сообщение.Отправитель.Адрес = "dgj29@rambler.ru";
    Сообщение.Тема = "Предупреждение!";
    Сообщение.Тексты.Добавить("Истекает срок действия регистрации у"+СписокБ);
    Почта = Новый ИнтернетПочта;
    Попытка
    Почта.Подключиться(ИПП);
    Сообщить("Подключено");
    Почта.Послать(Сообщение);
    Сообщить("Письмо отправлено");
    Исключение
        Сообщить(ОписаниеОшибки());
        Сообщить("Письмо не отправлено!!!");
        Возврат;
        КонецПопытки;
    Почта.Отключиться();
//иначе
//  сообщить("Месяц не подходит");
   
 
  КонецПроцедуры
0
Posternac
0 / 0 / 0
Регистрация: 15.08.2013
Сообщений: 6
15.08.2013, 21:01 9
По показанному коду небольшая рекомендация: вынесите настройки почты в справочник либо регистр и подставляйте оттуда, емайл подтягивайте из контактов. или вы просто в примере так топорно прописали?

Добавлено через 10 минут
По вопросу: в строке 52 должен быть цикл в котором вы получателей добавляете, формирование сообщения перенесите в цикл (после 26 строки) а ИПП перенесите перед циклом

Добавлено через 5 минут
И еще. Лучше формируйте для каждого получателя отдельное письмо, т.к. при списке получателей, каждый получатель будет видеть все адреса. И используйте тайм аут рассылки, иначе почтовый сервер расценит это как спам рассылку и заблокирует.
0
15.08.2013, 21:01
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
15.08.2013, 21:01

отправка письма
Здравствуйте, при отправки письма с формы, столкнулся с такой ситуацией. Первая проблема в том...

Отправка письма
SmtpClient client = new SmtpClient("smtp.yandex.ru"); client.Credentials = new...

Отправка письма
Доброго времени суток. Как можно отправить письмо, используя LotusScript, с другого (общего)...


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

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

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