Ich versuche gerade ein Programm zu basteln, welches Mails von einem
pop3 Server abholt und direkt an einen
SMTP weiterleiten soll.
Das Abholen funktioniert, aber der
SMTP meldet immer nur "0 message[s] received"...
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
aCount, aSize: longint;
n, m: integer;
TmpMsg: TIdMessage;
Envelope_to:
string;
begin
Memo1.Clear;
Memo2.Clear;
IdPop31.Disconnect;
IdPop31.Host := '
pop.irgendeinserver.com';
IdPop31.Username := '
irgendeinuser';
IdPop31.Password := '
irgendeinpasswort';
IdSMTP1.Host := '
server';
Envelope_to := '
neueadresse@server';
try
IdPop31.Connect;
if IdPop31.LastCmdResult.TextCode = '
1'
then
Memo2.Lines.Add('
<< +OK Ready')
else
Memo2.Lines.Add('
<< +OK Error');
aCount := IdPop31.CheckMessages;
aSize := IdPop31.RetrieveMailBoxSize;
Memo2.Lines.Add('
<< +OK ' + IntToStr(aCount) + '
' + IntToStr(aSize));
IdSMTP1.Connect;
if IdSMTP1.Connected = True
then
begin
Memo2.Lines.Add(IntToStr(aCount) + '
messages waiting');
for n := 1
to aCount
do
begin
TmpMsg := TIdMessage.Create(IdPop31);
try
if IdPop31.Retrieve(n, TmpMsg) = True
then
Memo1.Lines.Add('
retrieved')
else
Memo1.Lines.Add('
NOT retrieved');
for m := 0
to TmpMsg.Body.Count - 1
do
Memo1.Lines.Add(TmpMsg.Body[m]);
Memo2.Lines.Add('
<< +OK ' + IntToStr(TmpMsg.Headers.Count));
//Hier soll eigentlich die größe der Message stehen
Memo2.Lines.Add('
Message from: ' + TmpMsg.Headers.Values['
From']);
Memo2.Lines.Add('
to: ' + TmpMsg.Headers.Values['
To']);
m := TmpMsg.Headers.IndexOfName('
Envelope_to');
if m = -1
then
m := TmpMsg.Headers.Add('
Envelope_to');
TmpMsg.Headers.ValueFromIndex[m] := Envelope_to;
IdSMTP1.SendMsg(TmpMsg);
{if IdPop31.Delete(n) = True then
Memo2.Lines.Add('<< +OK Everything done')
else
Memo2.Lines.Add('<< +Error Message not deleted');}
finally
TmpMsg.Free;
end;
end;
IdSMTP1.Disconnect;
end
else
Memo2.Lines.Add('
<< +Error not connected to SMTP');
except
on E:
Exception do
begin
for n := 0
to +IdPop31.LastCmdResult.Text.Count - 1
do
Memo2.Lines.Add('
<< +Error ' + IdPop31.LastCmdResult.Text[n]);
end;
end;
end;
Außerdem würd mich noch interessieren, wie ich die größe der aktuellen Mail ermitteln kann.. ich hab keine passende Eigenschaft gefunden
Elektronische Bauelemente funktionieren mit Rauch. Kommt der Rauch raus, geht das Bauteil nicht mehr.