Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Mail (TIDSMTP) aus Serviceanwendung funkt nicht :( (https://www.delphipraxis.net/77309-mail-tidsmtp-aus-serviceanwendung-funkt-nicht.html)

Cyberbob_at_tot 17. Sep 2006 15:35


Mail (TIDSMTP) aus Serviceanwendung funkt nicht :(
 
Hallo zusammen,
ich schreibe gerade eine Serviceanwendung. Mein Problem ist gerade, das er mir keine Mails verschickt. Bekomme da eine EAccessViolation bei "with IdMessage do begin". Versteh leider nicht wieso, vieleicht könnt ihr mir da weiterhelfen. Habe in die Serviceanwendung TIDSMTP,TIdMessage und IdAttachmentFile eigefügt.

Code:
procedure TService1.SendMailtoAdmin;
var fehler: boolean;
begin
  fehler := false;
  //Mail vorbereiten
    with IdMessage do begin
      Body.Text := '';
    // Name des Absenders
      From.Text := '******************';
    //E-Mail-Adressen der Empfänger (durch Komma getrennt)
      Recipients.EMailAddresses := '*******************';
    //Betreff (Subject) der Mail
      Subject := 'Fehler';
    //Priorität
      Priority := mpNormal;
    //E-Mail-Adressen der Kopie-Empfänger (CC=Carbon Copy)
      CCList.EMailAddresses := '';
    //Content Typ
      ContentType := 'multipart/mixed';
    end;
  //Anhang
    TIdAttachmentfile.Create(idmessage.MessageParts, LOGFILE);
  //Authentifizierung nötig?
    SMTP.AuthType := atDefault;
  //Benutzerdaten für Authentifizierung
    SMTP.Username := '**************';
    SMTP.Password := '**************';
  //Server-Daten
    SMTP.Host := '***********';
    SMTP.Port := 25;
    SMTP.Connect;
    SMTP.Send(idMessage);
    SMTP.Disconnect;
    //Mail verschicken
  {except
    writelog('Fehler bei SMTP Admin Verbindung');
    fehler := true;
  end;
  try
    if not fehler then SMTP.Send(IdMessage);
  finally
    if not fehler then
    begin
      SMTP.Disconnect;
      writelog('AdminMail versendet');
    end;
  end;}
end;

Danke für jegliche Hilfe.

MFG

Cyberbob

marabu 17. Sep 2006 16:04

Re: Mail (TIDSMTP) aus Serviceanwendung funkt nicht :(
 
Hallo,

wo und wann hast du die Instanz von TIdMessage erzeugt? Welche Meldung kommt genau? Eine Speicheradresse 0 weist auf eine fehlende Instanz (IdMessage = nil) hin.

Grüße vom marabu

Cyberbob_at_tot 17. Sep 2006 16:06

Re: Mail (TIDSMTP) aus Serviceanwendung funkt nicht :(
 
hmmm habe ich hier, oder ist das falsch ?

Code:
procedure TService1.ServiceCreate(Sender: TObject);
begin
  SMTP.Create;
  IdMessage.create;
  Service1.SendMailtoAdmin;
end;

marabu 17. Sep 2006 16:18

Re: Mail (TIDSMTP) aus Serviceanwendung funkt nicht :(
 
Der Ort mag stimmen, aber die Methodik ist wohl falsch - besser so:

Delphi-Quellcode:
idMessage := TIdMessage.Create;
marabu

Cyberbob_at_tot 17. Sep 2006 16:33

Re: Mail (TIDSMTP) aus Serviceanwendung funkt nicht :(
 
Ups, ja da lag ich falsch. Habs geändert, aber leider kommt immer noch die selbe Fehlermeldung.

Delphi-Quellcode:
procedure TService1.ServiceCreate(Sender: TObject);
begin
  idMessage := TIdMessage.Create;
  Service1.SendMailtoAdmin;
end;

marabu 17. Sep 2006 17:08

Re: Mail (TIDSMTP) aus Serviceanwendung funkt nicht :(
 
Gehe systematisch vor: verwende Assert() oder führe ein tracefile. Prüfe in deiner Methode SendMailToAdmin() ob alle deine Annahmen zutreffen. Die genaue Fehlermeldung hast du noch nicht zitiert und zu der Vermutung idMessage = nil hast du auch noch nicht Stellung genommen. Eventuell hast du ja ein Überdeckungsproblem und die verwendete Variable idMessage in der Methode SendMailToAdmin() ist nicht dieselbe, wie die jetzt ordnungsgemäß instanzierte.

marabu

Cyberbob_at_tot 17. Sep 2006 17:23

Re: Mail (TIDSMTP) aus Serviceanwendung funkt nicht :(
 
Sorry keine Erfahrung mit Fehleranalyse.

Habe aber eine VCL wo der Selbe Code enthalten ist, da funktioniert er und die Mail wird verschickt!

Die genaue Fehlermeldung:
Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation mit der Meldung 'Zugriffsverletzung bei Adresse 004D2198 in Modul Project.exe. Lesen von Adresse 0000108 aufgetreten.


Werd mich morgen mal dransetzen und schauen ob ich da was finden kann.

Wie kann ich die Instanz auf Nill prüfen? Die Variable ist die Selbe in der Prozedure.

Alles sehr komisch :(

FBrust 17. Sep 2006 17:24

Re: Mail (TIDSMTP) aus Serviceanwendung funkt nicht :(
 
Hi,

fehlt da nicht noch ein

Delphi-Quellcode:
var idMessage: TIdMessage;
?



Gruß
Frank

Edit: Evtl. ist es auch sinnvoll die Variable für die Mail anders zu benennen, da "idMessage" möglicherweise schon durch TIdMessage selbst verwendet wird....

Cyberbob_at_tot 17. Sep 2006 17:50

Re: Mail (TIDSMTP) aus Serviceanwendung funkt nicht :(
 
Cool...


das unbenennen von idmessage in Mailmessage hat geholfen. Danke für eure Hilfe. Man sollte eben immer ne vernüftige Bezeichnung angeben :=


Danke für Eure Hilfe!


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:05 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz