Senden von HTML-Mails mit eingefügten Bildern (über Outlook ab 2007)

Thema dieses Beitrages: HTML, Delphi, Outlook, Bilder einfügen (embedded), E-mail Versand

Das Versenden von Outlook ab Version 2007 mit eingefügten Bildern im HTML ist nicht ganz trivial, zumal es überall Beispielausschnitte gibt, aber wenig konkretes, zumindest nicht in Delphi. Vielleicht habe ich es aber auch einfach nicht gefunden. Das folgende ist ein Ausschnitt mit dem man in Delphi mit Outlook Nachrichten mit eingefügten Bildern im Text versenden kann.

Der Code ist ein Auszug, z.B. hat diese Funktion natürlich Parameter, diese sind hier weggelassen, da es den Rahmen sprengen würde. Im wesentlichen werden hier Empfänger, Anhänge etc. übergeben.
Es sei auch verziehen, wenn jetzt irgendwas fehlt… aber es ist eben ein Auszug und es sollte genügen, dass jeder sich was bauen kann.

function SendwithOutlook:Bool;

const
olMailItem = 0;
olByValue = 1;
PR_ATTACH_MIME_TAG = ‚http://schemas.microsoft.com/mapi/proptag/0x370E001E‘;
PR_ATTACH_CONTENT_ID = ‚http://schemas.microsoft.com/mapi/proptag/0x3712001E‘;
PR_ATTACHMENT_HIDDEN = ‚http://schemas.microsoft.com/mapi/proptag/0x7FFE000B‘;
var
rcp, oMapi, newAttach, Outlookapp, MyAttachments: Olevariant;
strTemp, s: string;
i, x, y: Integer;
oItem: Variant;
picliste: TStringlist;
Version: string;
begin
fehler := False;
try
Outlookapp := GetActiveOleObject(‚Outlook.Application‘);
except
Outlookapp := CreateOleObject(‚Outlook.Application‘);
end;
Version := Copy(VarToStr(OutlookApp.version), 1, 2);

try
oMapi := OutlookApp.GetNamespace(‚MAPI‘);
oMapi.logon();
oItem := OutlookApp.CreateItem(olMailItem);
except
on e: exception do
begin
showmessage(‚Es ist ein Fehler bei der Outlook-Verbindung aufgetreten‘, e.message);
exit(false);
end;
end;

try
rcp := oItem.Recipients.Add(‚xyz@abc.de‘);
rcp.Type := 1;
end;

picliste := TStringlist.Create;
try
y := pos(‚ 0 do
begin
i := PosEx(‚SRC=“‚, UpperCase(Nachricht), y);
if i > 0 then
begin
x := PosEx(‚“‚, Nachricht, i + 6);
strTemp := copy(Nachricht, i + 5, x – i – 5);
picListe.Add(strTemp);
delete(Nachricht, i + 5, x – i – 5);
insert(‚cid:‘ + sysutils.ExtractFilename(StrTemp), nachricht, i + 5);
end;
y := PosEx(‚<IMG‘, UpperCase(Nachricht), y + 1);
end;

oItem.Subject := ‚Betrefftext‘;
oItem.Bodyformat := 2;
oItem.HtmlBody := ‚Ihre Nachricht‘;

// der Teil, der dafür sorgt, dass die Bilder im Text als Inline-Attachments behandelt werden
if StrToInt(version) >= 12 then
begin
if picliste.count > 0 then
begin
myAttachments := oItem.Attachments;
for i := 0 to picliste.Count – 1 do
begin
newAttach := myAttachments.add(picliste.Strings[i]);
newAttach.propertyAccessor.SetProperty(PR_ATTACH_CONTENT_ID, sysutils.ExtractFilename(picliste.Strings[i]));
newAttach.propertyAccessor.setProperty(PR_ATTACH_MIME_TAG,’image/jpeg‘); // Mime-Tag
newAttach.propertyAccessor.setProperty(PR_ATTACHMENT_HIDDEN, true);
end;
end;
oItem.save;
// das sind normale Anhänge, wenn benötigt
myAttachments := oItem.Attachments;
myAttachments.Add(dateien[i], 1, 1,’Dateixyz.txt‘);
oItem.send; // oder .display
except
on e: exception do
showmessage(‚Es ist ein Fehler beim Versenden der Nachricht aufgetreten‘, e.message);
end;
end;
finally
picliste.Free;
end;
finally
myAttachments := VarNull;
OutlookApp := VarNull;
end;
end;

Jetzt über 30 Euro sparen!
Bitdefender Internet Security Multi Device 2018 mit über 40% Rabatt

Verwandte Themen:


Comments are closed.