Für das Versenden empfiehlt es sich, die INDY-Komponenten zu verwenden. In den "hauseigenen" Komponenten habe ich kein Hinweis gefunden, wie die Authentifizierung am Mailserver erfolgt. Dies ist nun mittlerweile bei allen seriösen Servern Bedingung. Hier also ein kurzen Beispiel für den Mailversand.
In das Formular ist eine TIdSMTP1 (zu finden unter INDY-Clients) und eine TIdMessage (zu finden unter INDY-Misc) aufzunehmen.
Zunächt wird der Mailserver angegeben (hier GMX):
IdSMTP1->Host="mail.gmx.net";
Dann müssen für die Authentifizierung Username und Passwort vorgegeben werden :
IdSMTP1->UserId="********"; IdSMTP1->Password="*******";
IdSMTP1->Username="********"; // Indy 9 BCB 2006 vorher IdSMTP1->UserId IdSMTP1->Password="*******";
Vorgabe des Portes des Mailservers:
IdSMTP1->Port=25;
Nun wird die Message erzeugt und mit Parametern versorgt. Absender der Mail (die meisten Provider nehmen die Mail nur an, wenn tatsächlich die registriete Mailadresse als Absender drin steht):
IdMessage1->From->Text="eigene Adresse@gmx.net"; IdMessage1->Sender->Text="Eigener Name";
Vorgrabe der Empfänger:
IdMessage1->Recipients->EMailAddresses="zieladresse@asdadasdasda.de";
Vorgabe der Betreffzeile:
IdMessage1->Subject="Test";
Für den Mailtext ist eine TStringlist o.a. (Memofeld, Richtextfeld, Listbox) erforderlich:
TStringList *body=new TStringList();
body->Add("Hallo");
IdMessage1->Body=body;
Wenn ein Attachment angehängt werden soll:
IdMessage1->MessageParts->Add(); TIdAttachment *Att=new TIdAttachment(IdMessage1->MessageParts,"g:\\Dokument1.txt");
Für weitere Anhänge, die Zeilen mit neuem Zeiger wiederholen.
Nun können wir senden:
try
{
IdSMTP1->Connect(5000); // nach 5 Sek. Timeout
IdSMTP1->Send(IdMessage1);
IdSMTP1->Disconnect();
}
catch(...)
{
Application->MessageBox("Fehler beim Versenden der Nachricht","Mail",MB_OK|MB_ICONSTOP|MB_SYSTEMMODAL);
}
Aufräumen:
delete body; delete Att;
Siehe auch: Abholen von Mails mit den Indy-Komponenten (IdPOP3)
Beschreibung zu weiteren Indy-Komponeten: