Entwickler-Ecke
Internet / Netzwerk - E-Mail senden
Jeppen - Mi 03.05.06 20:54
Titel: E-Mail senden
Hallo,
Ich möchte gerne eine E-mail versenden und benutze dafür den TIdSMTP von Delphi.
Hier der code
Quelltext
1: 2: 3: 4: 5: 6:
| smtp.Host := edtsmtp.Text; SMTP.Port := 25; MailMessage.From.Address := edtFrom.Text; MailMessage.Recipients.EMailAddresses := edtto.Text; MailMessage.Subject := edtSub.Text; MailMessage.Body.Text := memtext.Text; |
Das Problem liegt beim MailMessage. Ich habe ihn deklariert als "MailMessage: TIdMessage;" jdoch funktioniert es nicht.
Kann mir jemand helfen?
MfG
Jeppen
Olli_Sahr - Mi 03.05.06 22:00
Hallo,
ich habe den folgenden Code:
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: 52: 53:
| procedure Button1Click(Sender: TObject);
var SMTP: TIdSMTP; Nachricht: TIdMessage;
begin
Nachricht := TIDMessage.Create(nil); SMTP := TidSMTP.create(nil);
try
try
Nachricht.Subject := 'testmail 3';
Nachricht.From.Address := 'FromAddress@firma.de'; Nachricht.Recipients.Add.Address := 'ToAddress@firma.net'; Nachricht.Sender.Address := 'SemderAddress@firma.de';
Nachricht.Body.Clear; Nachricht.Body.Add('Body erste Zeile'); Nachricht.Body.Add('Body 2 Zeile'); Nachricht.Body.Add('Body 3 Zeile'); Nachricht.Body.Add('Body 4 Zeile'); Nachricht.Body.Add('Body 5 Zeile');
SMTP.Host := 'smtp.mailserver.de'; SMTP.Port := 25; SMTP.Username := 'HierKommtDerUsername'; SMTP.Password := 'Passwort';
SMTP.Connect; SMTP.Send(Nachricht);
except on E: Exception do begin ShowMessage(E.Message); end; end;
finally
SMTP.Disconnect;
smtp.Free; Nachricht.Free;
end;
end; |
Habe den Code aus dem Forum zusammengesucht und aus einem Beitrag einer Zeitschrift.
Habe dabei das folgende Problem (wenn ich debugge):
Er kommt bis zu dem SMTP.Connect;
Danach kommt meine Firewall hoch und fragt, ob ich das erlauben will.
Ich sage "Ja".
Nach 2 - 4 Sekunden bin ich wieder im Quelltext bei SMTP.Send(Nachricht);
Ich drücke F8.
Nach genau 2 Minuten (in denen nichts passiert), wird in der Unit "IdIOHandler" die procedure TIdIOHandler.RaiseConnClosedGracefully; ausgeführt.
Es wird eine Exception mit der Meldung "Connection Closed Gracefully" gworfen.
Was läuft da bei mir falsch?
Ich habe bewusst meine Frage an den Thread hier gehängt, da es das gleiche Thema betrifft und wir und so vielleicht gegenseitig helfen können.
Danke und Gruß
OLLI
Nachtrag: natürlich stehen bei mir für den SMTP-Host, für Username und für Passwort richtige Werte drinnen.
Die habe ich hier nur für das Forum rausgenommen.
Delete - Mi 03.05.06 23:52
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:
| procedure TForm1.Button1Click(Sender: TObject); var IdSMTP: TIdSMTP; IdMsg: TIdMessage; begin IdSMTP := TIdSMTP.Create(nil); IdMsg := TIdMessage.Create(nil); try IdSMTP.Host := 'mail.michael-puff.de'; IdSMTP.Port := 25; IdSMTP.Connect;
IdMsg.From.Address := 'mpuff@michael-puff.de'; IdMsg.Recipients.EMailAddresses := 'mpuff@michael-puff.de'; IdMsg.Subject := 'Test';
IdSMTP.Send(IdMsg); finally FreeAndNil(IdSMTP); FreeAndNil(IdMsg); end; end; |
Olli_Sahr - Sa 06.05.06 15:30
Hallo,
langsam denke ich echt, ich bin bekloppt......
Ich habe ein Image zurückgesetzt, auf dem kein Delphi installiert ist.
Ich habe danach Delphi 7 Enterprise installiert und bei der Installation die INDY Komponenten
nicht mit installiert (da die auf der CD in einer älteren Form vorhanden sind.
Anschließend habe ich die aktuellste Version der INDY Komponntenten (indy10.1.5_Delphi7.exe) installiert.
Neues Projekt gemacht und den Code von "Luckie" eingefüht (allerdings mit meinen Providerdaten).
Da er die IdMessage und IdSMTP nicht kannte, habe (die werden ja dynamisch erzeugt) habe ich aus der Komponentenpalette (über die Komponentenliste) die beiden Komponenten eingefügt.
Somit sind die benötigten Units im USES Bereich.
Schaut dann so aus:
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: 52: 53: 54: 55:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdComponent, IdTCPConnection, IdTCPClient, IdExplicitTLSClientServerBase, IdMessageClient, IdSMTPBase, IdSMTP, IdBaseComponent, IdMessage;
type TForm1 = class(TForm) Button1: TButton; IdMessage1: TIdMessage; IdSMTP1: TIdSMTP; procedure Button1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); var IdSMTP: TIdSMTP; IdMsg: TIdMessage; begin IdSMTP := TIdSMTP.Create(nil); IdMsg := TIdMessage.Create(nil); try IdSMTP.Host := 'smtp.1und1.com'; IdSMTP.Port := 25; IdSMTP.Connect;
IdMsg.From.Address := 'oliver@domain.de'; IdMsg.Recipients.EMailAddresses := 'irgendjemand@gmx.net'; IdMsg.Subject := 'Test';
IdSMTP.Send(IdMsg); finally FreeAndNil(IdSMTP); FreeAndNil(IdMsg); end; end;
end. |
Leider wieder das gleiche Problem.
"Connection Closed Gracefully"
Mail habe ich keine erhalten.....
Was kann ich machen?
Habe ich was vergessen?
Bitte helft mir, es ist DRINGEND !!!!!!
Gruß
OLLI
P.S.
Nachtrag: PureTec verlangt eine Autentifizierung beim Senden einer Mail.
Aber selbst wenn ich Username und Password auskommentiere und durch meine Zugangsdaten ersetze, funktioniert es nicht.
Fighter#1 - Sa 06.05.06 20:57
Also, bei 1und1 verzocken die Indys bei mir gnadenlos.
Das hab ich gesteckt, ich glaub es liegt daran, dass hinter einem Vertrag bei 1und1 verschiedene Domains und Emailadressen sein können, da musst du dir was anderes einfallen lassen.
Warum schreibst du nirgendwie die Authentifizierungs methode rein?
Olli_Sahr - Sa 06.05.06 21:19
Hallo,
habe bei den Indy10 Komponenten die Autentifizierung gesetzt (Host, UserName und AuthType).
Hat aber nicht funktioniert.
Habe ein Image zurückgelesen (PC ohne Delphi), Delphi 7 mit den mitgelieferten Indy Komponenten installiert (die sind dann etwas älter) und da funktionietrt es.
Ich habe bei den alten Indy Kompos auch keine Autentifizierung eingegeben, aber dann eine Meldung vom Server erhalten, dass eine Autentifizierung nötig ist.
Darauf hin übergebe ich Username, Password und AuthenticationType := atLogin.
Bei den Indy10 habe ich das gleiche gemacht, nur dass da die Progerty "AuthType" heißt und andere Werte hat.
Aber mit KEINEM dieser Werte hat es geplappt.....
Mit den alte Indys geht es....
Strange...
Danke aber trotzdem.....
Gruß
OLLI
LowSkills - Mi 09.05.07 19:09
Und wenn ich mich auf den Kopf stelle, es klappt einfach nicht...
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:
| procedure TForm1.Button1Click(Sender: TObject); var IdSMTP: TIdSMTP; IdMsg: TIdMessage; begin IdSMTP := TIdSMTP.Create(nil); IdMsg := TIdMessage.Create(nil); try IdSMTP.Host := 'mail.michael-puff.de'; IdSMTP.Port := 25; IdSMTP.Connect;
IdMsg.From.Address := 'mpuff@michael-puff.de'; IdMsg.Recipients.EMailAddresses := 'mpuff@michael-puff.de'; IdMsg.Subject := 'Test';
IdSMTP.Send(IdMsg); finally FreeAndNil(IdSMTP); FreeAndNil(IdMsg); end; end; |
Ich bekomme immer wieder die fehlermeldung dass USERNAME dem Programm nicht bekannt ist (undeclared identifier).
Woran kann das liegen?
IdSMTP ist eingebunden, IdMessage ist eingebunden, aber funktioniert sich das nix!!! :(
Bidde bidee hilfe sonst fernseher kapput fenster schmeisse... ^^
mexx2k - Sa 06.10.07 20:39
Bei mir läufts irgendwie auch nicht:
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:
| function sendMail():boolean; var IdSMTP: TIdSMTP; IdMsg: TIdMessage; begin
IdSMTP := TIdSMTP.Create(nil); IdMsg := TIdMessage.Create(nil); try IdSMTP.Host := 'smtp.mailserver.de'; IdSMTP.Username := 'user'; IdSMTP.Password := 'password'; IdSMTP.Port := 25; IdSMTP.Connect;
IdMsg.From.Address := 'blub@blub.de'; IdMsg.Recipients.EMailAddresses := 'mail@mail.de'; IdMsg.Subject := 'Betreff';
IdSMTP.Send(IdMsg); finally FreeAndNil(IdSMTP); FreeAndNil(IdMsg); end; end; |
Allerdings kommt bei mir immer der Fehler:
Im Projekt blub.exe ist eine Exception der Klasse EIdSMTPReplyError mit der Meldung '' aufgetreten.
Danke im vorraus
Moderiert von
Narses: 2. Frage entfernt.
delphi10 - Do 20.12.07 17:35
mexx2k hat folgendes geschrieben: |
Bei mir läufts irgendwie auch nicht:
Allerdings kommt bei mir immer der Fehler:
Im Projekt blub.exe ist eine Exception der Klasse EIdSMTPReplyError mit der Meldung '' aufgetreten.
Danke im vorraus
Moderiert von Narses: 2. Frage entfernt. |
Hallo
Ich weiß ja nicht, ob hier nochmal jemand reinschaut. Aber ich habe mein Mail-Problem so gelöst:
ShellExecute(Application.Handle, 'open',PChar('mailto:delphi10@MeineFirma.com '+'?subject=Problemreport TopDoc'+ '&body='+Get_Text), nil, nil,SW_Normal);
Wobei ich den Bodytext über Get_Text reinhole. Dabei ist es aber wichtig, dass das Zeilenende mit %0D%0A und nicht wie üblich mit #13#10 oder #$0D#$0A angegeben wird.
Get_Text liest eine Log-Datei aus und kopiert den Text in den Mail-Body.
Was ich aber so nicht hinbekommen habe ist eine Datei als Anhang dranzuhängen.
Gruß delphi10
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!