Ich habe in de CL folgendes gefunden:
Datei per E-Mail versenden
Nun ist meine Frage:
Wie schaffe ich es, dem Element lpFiles des Records TMapiMessage ein ARRAY zu übergeben, damit ich mehrere Dateien versenden kann?
Ich habe folgendes versucht:
Delphi-Quellcode:
type
TStrArray = array of String;
function SendFileMail(const FileName: TStrArray; const Subject, BodyText,
RecipAdress: string): string;
var
mMessage : TMapiMessage;
mlpFiles : array of TMapiFileDesc;
mRecips : TMapiRecipDesc;
i : Integer;
begin
// Sonstiger Code
SetLength(mlpFiles, Length(FileName));
for i := 0 to High(mlpFiles) do
begin
with mlpFiles[i] do
begin
flFlags := 0;
nPosition := 0;
lpszPathName := PChar(FileName[i]);
lpszFileName := nil;
lpFileType := nil;
end;
end;
with mMessage do
begin
lpszSubject := PChar(Subject);
lpszNoteText := PChar(BodyText);
lpszMessageType := nil;
lpszDateReceived := nil;
lpszConversationID := nil;
flFlags := 0;
lpOriginator := nil;
nRecipCount := 1;
lpRecips := @mRecips;
nFileCount := Length(FileName);
if nFileCount > 0 then
lpFiles := mlpFiles[0]
else
lpFiles := nil;
end;
// Restlicher Code
end;
Leider bekomme ich dann die Fehlermeldung
Code:
[Fehler] Unit1.pas(97): Inkompatible Typen: 'MapiFileDesc' und 'PMapiFileDesc'
Versuche ich folgendes:
Delphi-Quellcode:
if nFileCount > 0 then
lpFiles := @mlpFiles[0]
else
lpFiles := nil;
Dann wird das Programm kompiliert, die Funktion MAPISendMail gibt dann aber den Wert MAPI_E_FAILURE zurück.
Bei
Delphi-Quellcode:
if nFileCount > 0 then
lpFiles := @mlpFiles
else
lpFiles := nil;
Bekomme ich sogar folgenden Fehler:
Code:
---------------------------
Zugriffsverletzung bei Adresse 00404298 in Modul 'mail_test.exe'. Schreiben von Adresse 00000000.
---------------------------
Ich denke zwar, dass es mit einem Statischem Array funktionieren würde, da ich aber nicht weiß, aus wievielen Dateien der Anhang besteht, ist die Wahl des dynamischen Arrays wohl besser.
Ich hoffe, mir kann jemand helfen.