Mein Compiler: Delphi 7 Enterprise
OS: Windows XP Prof.
Für ein größeres Datenbankprogramm will ich ein Serienbrief
E-Mail Versand Modul erstellen. Der Code compiliert, alles geht bis auf die Verbindung zum E-Mail Server. Wie immer, wenn ein komplexer Fehler vorliegt, habe ich das Programm dann auf das Mindestmass reduziert. Es blieb ein Programm zum Versenden einer einzelnen Mail übrig, das einwandfrei funktionierte. Sobald ich es in das größere Program einband, ging nichts
mehr. Daraufhin hab ich es auf die reine Verbindungsfunktion reduziert:
Ich teste die Verbindung mit
type
TMailerForm = class(TForm)
SMTP: TIdSMTP;
.......
procedure TMailerForm.bbnTestConnectionClick(Sender: TObject);
var
rslt: boolean;
begin
rslt := true;
//setup SMTP
SMTP.Host := ledHost.Text; // z.B.: 'smtp.1und1.com'
SMTP.Username := ledUserName.Text; // z.B.: 'abcd-info'
SMTP.Password := ledPassword.Text; // z.B.: 'Simpson'
SMTP.Port := 25;
//test connection
try
try
SMTP.Connect(1000);
SMTP.Authenticate;
except on E:Exception do begin
ShowMessage(E.Message + #10#13 + 'Keine Verbindung');
rslt := false;
end;
end;
finally
if SMTP.Connected then
SMTP.Disconnect;
end;
if rslt then
lblFeedback.Caption := 'OK'
else
lblFeedback.Caption := 'ERROR';
end;{bbnTestConnectionClick}
Dies funktioniert einwandfrei.
Packe ich aber die Testroutine in eine Funktion
function TMailerForm.TestConnection: boolean;
begin
result := true;
//setup SMTP
SMTP.Host := ledHost.Text;
SMTP.Username := ledUserName.Text;
SMTP.Password := ledPassword.Text;
SMTP.Port := 25;
//test connection
try
try
SMTP.Connect(1000);
SMTP.Authenticate;
except on E:Exception do begin
SHowMessage( E.Message + #10#13 + 'Keine Verbindung');
result := false;
end;
end;
finally
if SMTP.Connected then
SMTP.Disconnect;
end;
end;
und rufe sie auf mit:
procedure TMailerForm.btnTest2Click(Sender: TObject);
var
rslt: boolean;
begin
rslt := TestConnection;
if rslt then
lblFeedback.Caption := 'Nicht verbunden'
else
lblFeedback.Caption := 'Positiv';
end;
so erhalte ich nur Fehler.
Was ist der Grund, was mache ich falsch?
Noch eine Frage:
Welche Version (Versionsnummer) von Indy hat Borland in Delhi 7 eingebunden?
BestenDank im Voraus für jede Hilfe.
OS: Windows XP Prof.
Für ein größeres Datenbankprogramm will ich ein Serienbrief
E-Mail Versand Modul erstellen. Der Code compiliert, alles geht bis auf die Verbindung zum E-Mail Server. Wie immer, wenn ein komplexer Fehler vorliegt, habe ich das Programm dann auf das Mindestmass reduziert. Es blieb ein Programm zum Versenden einer einzelnen Mail übrig, das einwandfrei funktionierte. Sobald ich es in das größere Program einband, ging nichts
mehr. Daraufhin hab ich es auf die reine Verbindungsfunktion reduziert:
Ich teste die Verbindung mit
type
TMailerForm = class(TForm)
SMTP: TIdSMTP;
.......
procedure TMailerForm.bbnTestConnectionClick(Sender: TObject);
var
rslt: boolean;
begin
rslt := true;
//setup SMTP
SMTP.Host := ledHost.Text; // z.B.: 'smtp.1und1.com'
SMTP.Username := ledUserName.Text; // z.B.: 'abcd-info'
SMTP.Password := ledPassword.Text; // z.B.: 'Simpson'
SMTP.Port := 25;
//test connection
try
try
SMTP.Connect(1000);
SMTP.Authenticate;
except on E:Exception do begin
ShowMessage(E.Message + #10#13 + 'Keine Verbindung');
rslt := false;
end;
end;
finally
if SMTP.Connected then
SMTP.Disconnect;
end;
if rslt then
lblFeedback.Caption := 'OK'
else
lblFeedback.Caption := 'ERROR';
end;{bbnTestConnectionClick}
Dies funktioniert einwandfrei.
Packe ich aber die Testroutine in eine Funktion
function TMailerForm.TestConnection: boolean;
begin
result := true;
//setup SMTP
SMTP.Host := ledHost.Text;
SMTP.Username := ledUserName.Text;
SMTP.Password := ledPassword.Text;
SMTP.Port := 25;
//test connection
try
try
SMTP.Connect(1000);
SMTP.Authenticate;
except on E:Exception do begin
SHowMessage( E.Message + #10#13 + 'Keine Verbindung');
result := false;
end;
end;
finally
if SMTP.Connected then
SMTP.Disconnect;
end;
end;
und rufe sie auf mit:
procedure TMailerForm.btnTest2Click(Sender: TObject);
var
rslt: boolean;
begin
rslt := TestConnection;
if rslt then
lblFeedback.Caption := 'Nicht verbunden'
else
lblFeedback.Caption := 'Positiv';
end;
so erhalte ich nur Fehler.
Was ist der Grund, was mache ich falsch?
Noch eine Frage:
Welche Version (Versionsnummer) von Indy hat Borland in Delhi 7 eingebunden?
BestenDank im Voraus für jede Hilfe.
Comment