Entwickler-Ecke

Internet / Netzwerk - E-Mail versenden über Indy SMTP Komponenten


Stadtfuchs - Mi 04.01.06 16:41
Titel: E-Mail versenden über Indy SMTP Komponenten
Hi

Ich sitz grad an einem Programm das einen bestimmten Schlüssel der Registry sichert und dann eine Bestätigungsmail mit einem kleinen Log absetzt. Ich habe mir von meinem Ausbilder ein bischen helfen lassen, da er meinte dass ich es so nicht schaffen würde. An dem Codestückchen, dass er mir gab, sollte ich nichts verändern. Jedoch funktioniert es immernoch nicht. Das Programm wird fehlerfrei beendet und man könnte denken, alles wäre gut. Die Mail ist jedoch auch nach etwas über einer halben Stunde nicht angekommen. An verstopfte Datenautobahnen glaube ich jetzt nicht wirklich... Ich poste das Stückchen Quellcode mal rein. Wäre nett, wenn das mal einer durchchecken könnte.

Schon mal allerherzlichsten Dank im Voraus.


Quellcode:

Delphi-Quelltext
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:
// Nachricht zusammensetzen
  nachricht := user + ', ' + computer + ', ' + filename + ', ' + datum + ', ' + zeit;

  // Mail initialisieren
  Msg.ClearHeader;
  Msg.ClearBody;
  Msg.Recipients.Clear;
  Msg.MessageParts.Clear;

  // Mail zusammenbauen
  Msg.Date := now;
  Msg.From.Text := '';
  Msg.ReceiptRecipient.Address := '<Mail Adresse>';
  Msg.Recipients.Add;
  Msg.Recipients.Items[0].Address := '<Mail Adresse>';
  Msg.Recipients.Items[0].Name := '<Mail Adresse>';
  Msg.Subject := 'RegKey Sicherung von ' + user;
  Msg.Priority := mpNormal;
  Msg.Sender.Address := 'Mail Adresse';
  // Absenderadresse Firma 1
  {$ifdef firma 1}
  Msg.From.Address := '<Mail Adresse 1>';
  {$endif}
  // Absenderadresse Firma 2
  {$ifdef firma 2}
  Msg.From.Address := '<Mail Adresse 2>';
  {$endif}
  // Absenderadresse Firma 3
  {$ifdef firma 3}
  Msg.From.Address := '<Mail Adresse 3>';
  {$endif}

  // SMTP-Zugangsdaten
  SMTP1.Host := '<Host>';
  SMTP1.Port := 25;
  SMTP1.Username := '<Username>';
  SMTP1.Password := '<Password>';

  try
    myText := TStringList.Create;
    myText.Add(nachricht);
    Msg.Body := myText;

    // Auf den Mailserver connecten / disconnecten
    SMTP1.Connect();
    SMTP1.Send(Msg);
    SMTP1.Disconnect;
  finally
    myText.Free;
    myText := nil;
  end;

Die Zugangsdaten und Mailadressen hab ich mal durch Platzhalter ersetzt, da ich nicht weiss wie die Betreffenden Leute reagieren, wenn die Sachen hier drin stehen. Warscheinlich nicht besonders gut ;-)


Fighter#1 - Mi 04.01.06 16:45

Bei mir lag das Problem mal hier:


Delphi-Quelltext
1:
Msg.From.Text := '';                    


Und du hast das auch leer gelassen.
Da muss die Adresse die zu dem SMTP Acc. gehört rein, sonst läuft da nischt.
Sonst seh ich grad nix außer das es recht kompliziert geschrieben ist.


Fighter#1 - Di 10.01.06 16:15

Moment, habe mich vertan glaube ich.
Du kannst doch eigentlich von einem Account nur eine Adresse benutzen,
und nich wie du 3 Stk. und du definierst sie immer neu ?????


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Msg.From.Address := '<Mail Adresse 1>';
  {$endif}
  // Absenderadresse Firma 2
  {$ifdef firma 2}
  Msg.From.Address := '<Mail Adresse 2>';
  {$endif}
  // Absenderadresse Firma 3
  {$ifdef firma 3}
  Msg.From.Address := '<Mail Adresse 3>';
  {$endif}

Dann würde ich eher sagen


Delphi-Quelltext
1:
Msg.From.Address:='<Mail Adresse 1>,<Mail Adresse 2>,...';