Registriert seit: 31. Okt 2003
1.120 Beiträge
Delphi 7 Personal
|
Re: Aktivierung eines Links ???
27. Jan 2004, 19:05
Du nimmst dir z.B. das Maildemo von Indy vor, schaust dir an, wie das ganze mit dem Empfang funktioniert und sorgst dafür, das er eine Mail nach der anderen empfängt ( ist kein Problem wenn du dir den Quelltext des Demos anguckst) .
Danach kannst du folgenden Text einbauen, nachdem er jeweils eine Mail empfangen hat:
Delphi-Quellcode:
procedure CollectURLs( AHTMLContent : String; URLList : TStrings) ;
var
TempStr : String;
begin
while Pos( ' <a ' , AHTMLContent) > 0 do
begin
TempStr := Trim( Copy( AHTMLContent, Pos( ' <a ' , AHTMLContent) + length( ' <a ' ) , length( AHTMLContent) ) ) ;
System.Delete( AHTMLContent, 1, Pos( ' <a ' , AHTMLContent) + length( ' <a ' ) ) ;
If ( Pos( ' </a>' , TempStr) > 0) then
begin
System.Delete( AHTMLContent, 1, Pos( ' </a>' , AHTMLContent) + length( ' </a>' ) ) ;
TempStr := Copy( TempStr, 1, Pos( ' </a>' , TempStr) - 1) ;
If ( Pos( ' >' , TempStr) > 0) then
begin
TempStr := Copy( TempStr, 1, Pos( ' >' , TempStr) - 1) ;
If ( Pos( ' href' , TempStr) > 0) and ( Pos( ' =' , TempStr) > Pos( ' href' , TempStr) ) then
begin
TempStr := Trim( Copy( TempStr, Pos( ' href' , TempStr) + length( ' href' ) , length( TempStr) ) ) ;
TempStr := Trim( Copy( TempStr, Pos( ' =' , TempStr) + length( ' =' ) , length( TempStr) ) ) ;
If ( Pos( ' "' , TempStr) > 0) then
begin
TempStr := Trim( Copy( TempStr, Pos( ' "' , TempStr) + length( ' "' ) , length( TempStr) ) ) ;
TempStr := Trim( Copy( TempStr, 1, Pos( ' "' , TempStr) - 1) ) ;
end;
URLList.Add( TempStr) ;
end; // If (Pos('href', TempStr) > 0)
end; // If (Pos('>', TempStr) > 0) then
end; // If (Pos('</a>', TempStr) > 0)
end; // while
end;
begin
//...
If ( Msg.ContentType = ' text/plain' ) or
( Pos( ' text/plain' + ' ;' , Msg.ContentType) = 1) then
begin
CollectURLs( Msg.Body.Text, Memo1.Lines) ;
end
else
for intIndex := 0 to Pred( Msg.MessageParts.Count) do
if Msg.MessageParts.Items[ intIndex] is TIdText then
If ( Msg.MessageParts.Items[ intIndex] .ContentType = ' text/html' ) or
( Pos( ' text/html' + ' ;' , Msg.MessageParts.Items[ intIndex] .ContentType) = 1) then
begin
CollectURLs( TIdText( Msg.MessageParts.Items[ intIndex] ) .Body.Text, Memo1.Lines) ;
end;
//...
end;
Das sorgt dafür, das er die HTML-Elemente der eMail findet und die URLs rausfiltert und in einer TStringList speichert ( hier z.B. Memo1.Lines) .
|