Hi erneut.
Ich habe jetzt folgenden Code zum Senden einer E-Mail, doch mein Programm "erstarrt" beim Betätigen des Versandknopfes.
Delphi-Quellcode:
uses
... IdBaseComponent, IdComponent, IdTCPServer, IdSMTPServer, Gradient,
IdMessage, IdUDPBase, IdUDPClient, IdSNMP, IdTCPConnection, IdTCPClient,
IdMessageClient, IdSMTP, idreplysmtp, IdExplicitTLSClientServerBase,
IdSMTPBase;
...
procedure TEpsilon.ButtonMailClick(Sender: TObject);
begin
idSMTP.Host:='
smtp.googlemail.com';
idSMTP.Port:=465;
//smtp service usually runs on this port 25 but GMail wants 465
idSMTP.Password:='
MyPassword';
//setup idmessage parameters
idmessage.From.address:=EditEMail.Text;
idmessage.Recipients.EMailAddresses:='
MeinComputerProgram@gmail.com';
idmessage.CCList.EMailAddresses:='
';
idmessage.BccList.EMailAddresses:='
';
idmessage.Subject:='
Mein Computer Program';
idmessage.Body.Text:=EditMailEra.Text+EditMailOld.Text+EditmailAmount.Text+EditMailModern.Text;
idmessage.Body.Text:=idmessage.Body.Text+MemoMail.Lines.Text;
//send the message
try
try
idSMTP.Connect;
LabelStatus.Caption:='
Connecting...';
//…then show the message
LabelStatus.Hint:='
Connecting...';
//…then show the message
idSMTP.send(idmessage);
LabelStatus.Caption:='
Sending...';
//…then show the message
LabelStatus.Hint:='
Sending...';
//…then show the message
//if an exception occurs…
except
on E: EIdSMTPReplyError
do
begin
LabelStatus.Caption:=E.
Message;
//…then show the message
LabelStatus.Hint:=E.
Message;
//…then show the message
end;
end;
finally
//disconnect from server
if IdSMTP.Connected
then
begin
IdSMTP.Disconnect;
LabelStatus.Caption:='
Disconnecting...';
//…then show the message
LabelStatus.Hint:='
Disconnecting...';
//…then show the message
end;
end;
end;
Außerdem benutze ich die
Indy-Komponenten "IDMessage" und "IDSMTP".
- GMail will aber auch "My Server requires authentication" haben. Liegt es vieleicht daran?
- Und wenn, wie baue ich dies ein?
- Was sonst ist eventuell falsch oder Schuld am Erstarren des Programmes?
- Wie kann ich laufend die Caption vom StatusLabel den Status anzeigen lassen (beim Erstarren ist es leer)?