Hoi,
Ik ben momenteel bezig met een applicatie die mail van een pop3 server sleurt, en deze forward naar een email adres op een exchange server, een simpele forward zou je zeggen.
Dit alles werkt ook gewoon naar behoren in mijn proof of concept alleen zit ik met het volgende probleem. Bij het verzenden/opslaan als bestand maakt Indy de headers opnieuw aan, op zich geen probleem, maar hij maakt ook de To-header opnieuw aan. Met als gevolg dat de geaddresseerde van het exchange email adres er in staat en er dus niet meer op (origineel) geaddresseerde email adres gesorteerd kan worden.
Dan denk je, ik pas de To-header aan voor verzending maar hier gaat het mis. Ik heb een afgeleide van TIdMessage gemaakt, de TIdForwardMessage met de functie GenerateHeader (deze maakt de headers aan) en deze ziet er als volgt uit:
delphi Code:
unit IdForwardMessage;
interface
uses
Classes,
IdMessage;
type
TIdForwardMessage = class(TIdMessage)
public
constructor Create;
destructor Destroy; override;
procedure GenerateHeader;
end;
implementation
{ TIdForwardMessage }
constructor TIdForwardMessage.Create;
begin
inherited Create;
end;
destructor TIdForwardMessage.Destroy;
begin
inherited Destroy;
end;
procedure TIdForwardMessage.GenerateHeader;
var
ToHeader: string;
begin
ToHeader:= Self.Headers.Values['To'];
inherited GenerateHeader;
with LastGeneratedHeaders do
begin
Values['To'] := ToHeader; {do not localize}
end;
end;
end.
De GenerateHeader moet worden aangeroepen vanuit de IdMessageClient.SendHeader functie, alleen het probleem is dat hij het vertikt deze afgeleide aan te roepen, daarintegen roept hij de GenerateHeader uit TIdMessage aan.
delphi Code:
procedure TIdMessageClient.SendHeader(AMsg: TIdMessage);
begin
AMsg.GenerateHeader;
IOHandler.Write(AMsg.LastGeneratedHeaders);
end;
Nu heb ik geprobeerd deze functie te overriden alleen dan krijg ik de volgende melding: "[DCC Error] IdForwardMessage.pas(15): E2170 Cannot override a non-virtual method"
Hoe kan ik nu het beste te werk gaan? Want ik wil namelijk niet de Indy source gaan aanpassen omdat ik Indy gebruik voor meerdere projecten.
Iemand een idee?
Bookmarks