procedure TMailThread.SendMail(JobID: Integer);
var
i: Integer;
MMail: TStringList;
ID:
String;
// EventCount = (Thread-)Global
begin
MMail := TStringList.Create;
MMail.Add('
Es wurden ' + IntToStr(EventCount) + '
Meldungen für den Auftrag "'
+ Jobs[JobID].AName + '
" gefunden:');
MMail.Add('
');
{ ... }
{ Andere Informationen hinzufügen, die hier aber nicht relevant sind (Keine Schleifen, nur stumpfe Zuweisungen von Text }
for i := 0
to High(Events)
do
if Events[i].AName = Jobs[JobID].AName
then
begin
MMail.Add('
---');
MMail.Add(Events[i].Info + '
| ' + Events[i].Time + '
| ' +
Events[i].Status + '
| ' + Events[i].Date + '
| ' + Events[i].Note);
MMail.Add('
---');
MMail.Add('
');
end
else
begin
MMail.Add('
---');
MMail.Add(Events[i].Info + '
| ' + Events[i].Time + '
| ' +
Events[i].Status + '
| ' + Events[i].Date + '
| ' + Events[i].Note);
MMail.Add('
---');
MMail.Add('
');
end;
{ Der Code hierrüber fügt die Events welche dem passenden Job angehören einfach in den MailText ein. Allerdings frage ich mich gerade selbst, was das mit dem 'else' soll. Habe den Code aus einem anderen Projekt von mir übernommen und etwas umgestellt. Hier ergibt es keinen Sinn, ist mir eben erst aufgefallen, als ich es gepostet habe :D Ich lasse es trotzdem hier mal stehen. }
MMail.Add('
------------------------------------------------------------');
MMail.Add('
');
MMail.Add('
Dieser Bericht wurde um ' + DateTimeToStr(Now) + '
erstellt.');
MailInfo.AHost := PChar(RPUService.Config.Host);
MailInfo.APort := StrToInt(RPUService.Config.Port);
{ ... }
{ SMTP- und Mail-Einstellungen }
ID := SMTPMail.SendMail(MailInfo);
// Meine DLL: Zugriff und abschicken
if ID = '
Success'
then // Rückgabewert prüfen und bearbeiten
begin
Jobs[JobID].Sended := True;
Jobs[JobID].SendWithNextWave := False;
Jobs[JobID].LastTime := TimeOf(Now);
Log(True, '
INFORMATION: Message to ' + Jobs[JobID].AMail +
'
was successfully transmitted';
end
else
begin
Log(True, '
ERROR [' + Jobs[JobID].AMail + '
]: ' + ID);
Jobs[JobID].Sended := False;
Jobs[JobID].SendWithNextWave := True;
end;
MMail.Free;
if (Length(Events) > 0)
and (Jobs[JobID].Sended = True)
then
for i := High(Events)
downto 0
do
if Events[i].AName= Jobs[JobID].AName
then
DeleteEventArrayElement(Events, i);
{ In den 4 Zeilen hierrüber werden die bearbeiteten Events aus der Liste entfernt }