AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi EMail aus einem Dienst erzeugen
Thema durchsuchen
Ansicht
Themen-Optionen

EMail aus einem Dienst erzeugen

Ein Thema von xweghau · begonnen am 29. Dez 2008 · letzter Beitrag vom 5. Jan 2009
Antwort Antwort
xweghau

Registriert seit: 29. Dez 2008
Ort: Soest
11 Beiträge
 
Delphi 7 Professional
 
#1

EMail aus einem Dienst erzeugen

  Alt 29. Dez 2008, 21:01
Hallo!
Mein erster Beitrag , mal sehen ...
Ich möchte aus einem Windows 2003 Server Dienst (mit D7 Prof erzeugt) eine EMail generieren, wenn ein bestimmtes Programm nicht mehr läuft und auch nicht vom Dienst wieder gestartet werden kann. Bis auf das Versenden der Mail klappt auch alles. Diese Mail versuche ich mit den Indy Komponenten TIdSMTP und TIdMessage zu senden. Wenn ich dies aus einer "normalen" EXE heraus mache, habe ich kein Problem. Aber eine durch den Dienst erzeugt Mail wird nicht versendet. Es wird eine SMTP Connection aufgebaut, doch der Send Befehl wird nicht (korrekt) ausgeführt.
Hier ein Auszug aus meinem Code:
********************************************
try
SMTP.Send(IdMsgSend);
DebugDatei('Mail versendet');
finally
if SMTP.Connected then
SMTP.Disconnect;
DebugDatei('Mail wurde nicht versendet');
end;
********************************************
Hinweis: Die Prozedur DebugDatei schreibt schreibt die durchlaufenen Schritte in eine Datei. Der Eintrag "Mail versendet" wird nicht ausgeführt.
Hat jemand von Euch einen Tipp? Danke schon mal für die Mühe (zumindest für das Lesen).
Gruß
Franz
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#2

Re: EMail aus einem Dienst erzeugen

  Alt 29. Dez 2008, 23:49
Hallo und willkommen in der DP.

Bitte benutze die Delphi-Tags, dann sieht der gepostete Code auch so aus:
(ich habe mir erlaubt, den Code auch noch entsprechend einzurücken)
Delphi-Quellcode:
try
  SMTP.Send(IdMsgSend);
  DebugDatei('Mail versendet');
finally
  if SMTP.Connected then
    SMTP.Disconnect;
  DebugDatei('Mail wurde nicht versendet');
end;
1. Im Fall der Fälle wird keine Debug-Meldung abgesetzt!
Nämlich, wenn SMTP.Send einen Fehler bringt und SMTP.Disconnect einen Fehler bringt.

2. Wird die Mail korrekt versendet, steht in deinem Debug:
Code:
Mail versendet
Mail wurde nicht versendet
3. Da du nicht verrätst, wie die Properties der Komponenten eingestellt sind (SMTP, IdMsgSend), ich aber mal unterstelle, dass es sich hier um TIdSMTP und TIdMessage handelt, kann dir hier auch niemand bei deinem Problem helfen.

cu

Oliver
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.171 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: EMail aus einem Dienst erzeugen

  Alt 30. Dez 2008, 08:02
Wird das Versenden evtl. von einer Firewall geblockt?
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
xweghau

Registriert seit: 29. Dez 2008
Ort: Soest
11 Beiträge
 
Delphi 7 Professional
 
#4

Re: EMail aus einem Dienst erzeugen

  Alt 30. Dez 2008, 09:29
Hallo Oliver!

Danke schon mal für Deine Mühe. Wie Du vermutest (und ich im ersten Absatz meines Beitrages schrieb :) ) verwende ich die Komponenten TIdSMTP und TIdMessage.

Nachfolgend der Quellcode. Der SMTP Server den ich verwende existiert und ist erreichbar. Auch die Empfängeradresse ist gültig. Die Eigenschaften der Komponenten habe ich als JPGs beigefügt.

Delphi-Quellcode:
procedure TsvcArchivprgUeberwachung.MailToAdmin;
begin
  with IdMsgSend do begin
    From.Text := 'Archiv_Mailsender@test.de//Absender
    ReplyTo.EMailAddresses := ''; //Antwort an
    Recipients.EMailAddresses := 'weghaus@test.de'; //Empfänger der Mail
    //Mailtext
    Body.Clear;
    try
      IdMsgSend.MessageParts.Clear;
    except
    end;
    Subject := 'Archivüberwachung'; //Mailbetreff
    Body.Add('Nachricht vom Archivsytem:');
    Body.Add('');
    Body.Add('Das Archivüberwachungsprogramm läuft derzeit nicht.');
    Body.Add('Es konnte auch nicht automatisch gestartet werden.');
    Body.Add('Bitte überprüfen Sie dies und starten Sie das Programm.');
    Body.Add('');
    //Ende Mailtext
    Priority := mpNormal; //Priorität
    CCList.EMailAddresses := ''; //Kopie an
    BccList.EMailAddresses := ''; //Blindkopie an
    ReceiptRecipient.Text := ''; //Antwortnachricht
  end;
  DebugDatei('Mail zum Versand erzeugt, die Verbindung wird jetzt hergestellt.');
//Authentifikation am Mailserver
  SMTP.AuthenticationType := atNone;
//Servername und -port vorgeben
  SMTP.Host := SmtpServerName;
  SMTP.Port := SmtpServerPort;
//Nachricht senden
  SMTP.Connect;
  if SMTP.Connected then
    DebugDatei('Connection wurde hergestellt')
  else
    DebugDatei('Connection konnte nicht aufgebaut werden');
  try
    SMTP.Send(IdMsgSend);
    DebugDatei('Mail erfolgreich gesendet');
  finally
    SMTP.Disconnect;
    DebugDatei('Disconnect ist erfolgt.');
  end;
end;
Ich hoffe, die Informationen sind jetzt soweit vollständig, dass mir jemand weiterhelfen kann!?

Gruß
Franz
Miniaturansicht angehängter Grafiken
propertiessmtp_908.jpg   propertiesidmsgsend_306.jpg  
  Mit Zitat antworten Zitat
xweghau

Registriert seit: 29. Dez 2008
Ort: Soest
11 Beiträge
 
Delphi 7 Professional
 
#5

Re: EMail aus einem Dienst erzeugen

  Alt 30. Dez 2008, 09:36
Hallo Bernhard,

die Firewall dürfte die Mail eigentlich nicht blocken. Wenn ich eine "normale" EXE mit diesem Code (sh. Antwort an Oliver) nutze, kommt eine Mail an. Was allerdings sein könnte: Der Dienst läuft ja nicht in meinem Benutzerkontext, sondern unter "lokales System". Evtl. liegt hier der Grund? Danke für den Tipp.

Gruß
Franz
  Mit Zitat antworten Zitat
xweghau

Registriert seit: 29. Dez 2008
Ort: Soest
11 Beiträge
 
Delphi 7 Professional
 
#6

Re: EMail aus einem Dienst erzeugen

  Alt 5. Jan 2009, 08:45
Hallo Leute,

ich habe die Erzeugung der EMail in eine normal EXE verlagert, die ich aus dem Dienst heraus mit ShellExecute aufrufe. Das funktioniert einwandfrei. Danke aber für Euere Mühe.

Gruß
Franz :-D
  Mit Zitat antworten Zitat
nahpets
(Gast)

n/a Beiträge
 
#7

Re: EMail aus einem Dienst erzeugen

  Alt 5. Jan 2009, 09:15
Hallo,

auch wenn Du schon eine Lösung hast, mein Dienst macht das so:

Delphi-Quellcode:
IdMessage.Clear;
IdMessage.MessageParts.Clear;
IdMessage.Date := Now;
idMessage.Subject := 'Fehlerprotokoll: Dienstestatus';
IdMessage.Body.Text := slMail.Text;
IdMessage.From.Text := GetEnvironmentVariable('COMPUTERNAME') + '@meinedomaene.de';
IdMessage.Recipients.EMailAddresses := iniMail.ReadString('MAILSERVER','EMailAddresses','mein.name@meinedomaene.de');
idSMTP.Host := iniMail.ReadString('MAILSERVER','HOST','ip.des.mail.servers');
idSMTP.HeloName := iniMail.ReadString('MAILSERVER','HELONAME','mein.name');
idSMTP.Password := iniMail.ReadString('MAILSERVER','PASSWORD','');
idSMTP.Username := idSMTP.HeloName;
Try
  idSMTP.Connect(10000);
  idSMTP.QuickSend(iniMail.ReadString('MAILSERVER','HOST','ip.des.mail.servers'),
                   IdMessage.Subject,
                   IdMessage.Recipients.EMailAddresses,
                   IdMessage.From.Text,
                   IdMessage.Body.Text);
  ErrorLog('Protokoll per Mail versandt.',0);
Except
  on e : Exception Do Begin
    ErrorLog(tmDienste.Name + ' Exception beim Mailversand: ' + e.Message,0);
  end;
end;
try
  idSMTP.Disconnect;
except
end;
Stephan
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz