in EAGetMail Attachment object,
Attachment.Content property returns binary data with SafeArray Type.
Many Delphi users asked me how to convert the SafeArray to Stream in delphi,
Here is the example code:
procedure TForm1.LoadAttToStream( att: IAttachment );
var
i: integer;
lbound: integer;
ubound: Integer;
len: integer;
buffer: array of byte;
myarray: OleVariant;
stream: TMemoryStream;
begin
myarray := att.Content;
lbound := VarArrayLowBound(myarray, 1 );
ubound := VarArrayHighBound(myarray, 1 );
len := ubound - lbound + 1;
if len = 0 then
exit;
SetLength( buffer, len );
for i := VarArrayLowBound(myarray, 1 ) to ubound do
begin
buffer[i] := VarArrayGet( myarray, i );
end;
stream := TMemoryStream.Create();
stream.WriteBuffer( buffer[0], len );
stream.SaveToFile( 'c:\my folder\' + att.Name ); //save stream to file.
stream.Free();
end;
Edited by user
11 years ago
|
Reason: Not specified