Код:
procedure TMessage.BitBtn1Click(Sender: TObject);
begin
Memo1.Lines.Clear;
LOG(' Уважаемый абонент!!!');
LOG('');
LOG(' Специализированный оператор связи уведомляет Вас о том,');
LOG(' что сертификат с данными:');
LOG('');
LOG(FormatDateTime(' Действителен с: dd.mm.yyyy г.', StrToDateTime(date_s.Caption)));
LOG(FormatDateTime(' Действителен до: dd.mm.yyyy г.', StrToDateTime(label4.Caption)));
LOG('');
LOG(' ФИО владельца: '+Fio_vlad.Caption);
LOG(' Должность: '+Dolzh.Caption);
LOG(' Организация: '+Organiz.Caption);
LOG(' Адрес электронной почты: '+Form9.DBGrid1.Fields[9].AsString);
LOG(' Серийный номер: '+Ser_nom.Caption);
LOG('');
LOG(' истекает через'+IntToStr(NOW-Form9.DBGrid1.Fields[1].Value)+' дн.');
LOG('');
LOG(FormatDateTime('по стостоянию на: dd.mm.yyyy г.', NOW));
LOG('');
LOG('');
LOG(' Рекомендуем Вам связаться с вашим менеджером для уточнения информации по тел: ');
LOG(' номера телефонов ');
LOG('');
LOG(' либо по адресу электронной почты :');
LOG(' какой-то адрес');
LOG(' 2-ой какой-то адрес');
LOG('');
LOG(' С Уважением, оператор связи"');
LOG(' доп.инфа об операторе: сайты и разная хрень');
IdSMTP1.Port:=25; //порт
IdSMTP1.Host := 'smtp.mail.ru'; //хост
IdSMTP1.AuthenticationType:=atLogin;
IdSMTP1.Username:='логин на почтовике'; //user
IdSMTP1.Password:='пароль на ящик'; //password
IdMessage1.AddHeader('Content-Type: text/html; charset= "windows-1251"');
IdMessage1.Subject:='=?UTF-8?B?0KPQstC10LTQvtC80LvQtdC90LjQtSDQvtCxINC40YHRgtC10YfQtdC90LjQuCDRgdC10YDRgtC40YTQuNC60LDRgtCwLg?='; {заголовок}
IdMessage1.Recipients.EMailAddresses:=Edit1.Text; //адрес получателя
IdMessage1.From.Address:='parabellum_87@mail.ru'; //?адрес отправителя
IdMessage1.Body.Assign(Memo1.Lines);
try
try
IdSMTP1.Connect(1000);
IdSMTP1.Send(IdMessage1);
except on E:Exception do
Memo1.Lines.Insert(0, 'ERROR: ' + E.Message);
end;
finally
if IdSMTP1.Connected then
IdSMTP1.Disconnect;
end;
Try
DM.ADOConnection1.BeginTrans;
with DM.UPDATE_pis do
begin
Parameters.ParamByName('@ID_Pisma').Value:=Ser_nom.Caption;
Parameters.ParamByName('@Data_otprav').Value:=NOW;
Parameters.ParamByName('@Poluch').Value:=Edit1.Text;//на какой адрес отправили
Parameters.ParamByName('@ID_Sotrud').Value:=Form9.DBGrid1.Fields[6].AsString;
Parameters.ParamByName('@Status').Value:='Отправлено';//притваиваем статус отпрвлено, согласно ид записи из формы
end;
DM.UPDATE_pis.ExecProc;
DM.ADOConnection1.CommitTrans;
except
DM.ADOConnection1.RollbackTrans;
ShowMessage('Невозможно выполнить. Повторите!');
end;
Message.Close;
DM.Zapros_ist_sert.Active:=False;
DM.Zapros_ist_sert.Active:=True;
end;
end.
в общем есть такой код отправки уведомления абону от том что у него истекает серт через столько-то дней по состоянию на дату отправки. Недостаток: нужно сделать запрос на выборку таких сертификатов. вывести это все в ДБГрид, и поочередно открывать каждую такую строку и отправлять уведомление кнопкой отправить. Подскажите пожалуйста как можно научить делать программу эту функцию автоматически. Что бы два раза в день, например, она прогоняла запрос на поиск сертификатов срок которых истекает менее чем через 30 дней и отправляла подобное сообщение автоматически, без участия пользователя, том случает если статус сообщения на момент отправки "Готово к отправке".В идеале, делать она это должна в фоновом режиме. Что бы сотруднику осталось только заходить время от времени и проверять все ли нормально отправляется.