Zitat von
toms:
Auch mal probieren könntest du folgendes:
FMailitem.HtmlBody := '<HTML><H2>My HTML page.</H2><BODY>My body.</BODY></HTML>';
Kommt der Fehler dann noch?
ja, FMailitem.HtmlBody :=FMailitem.HtmlBody geht ja auch nicht, jedes setzen fürt zur
Exception.
aber der 2.Link hat mir sehr weitergeholfen, mir war auch nicht klar, daß ich mit objDoc = objInsp.WordEditor Zugriff auf "Word" bekomme, das eröffnet einen ja ganz neue Welten
.
anhand des 2. Links sieht mein Code nun so aus und funktioniert
:
Delphi-Quellcode:
uses ComObj,outlookXP (outlook2000)
procedure Proc_OutlookEmailErstellen(const EmailTextHTML,Betreff,EmpfaengerAN:string;const LesebestaetigungAnfordern:boolean);
//Quellen:
//http://www.delphipraxis.net/topic152179_outlook+email+mit+signatur+erstellen.html
//http://www.outlookcode.com/codedetail.aspx?id=455
Var OutlookApplication: Variant;
Mailitem,ObjectInspector,WordEditor: OleVariant;
s:string;
begin
OutlookApplication := CreateOleObject('Outlook.Application');
try
Mailitem := OutlookApplication.CreateItem(olMailItem);
try
Mailitem.subject := Betreff;
Mailitem.ReadReceiptRequested := LesebestaetigungAnfordern;
Mailitem.Recipients.Add(EmpfaengerAN);
Mailitem.BodyFormat := olFormatHTML;
//Mit Aufruf von Getinspector enthält die Mail nun die Signatur
ObjectInspector := Mailitem.getinspector;
//Feststellen, ob Word als EmailEditor verwendet wird
//Email text vor einer evtl. vorhandenen Signatur einfügen
If ObjectInspector.EditorType = olEditorWord Then
begin
WordEditor := ObjectInspector.WordEditor;
WordEditor.Characters.item(1).InsertBefore(EmailTextHTML);
end
else
begin
Mailitem.HtmlBody := StringReplace(Mailitem.HtmlBody,
'<body>',
'<body>'+EmailTextHTML,
[rfReplaceAll,rfIgnoreCase]);
end;
//Mail anzeigen, anwender kann sie noch bearbeiten und selber versenden
Mailitem.display;
finally
Mailitem := Unassigned;
end;
finally
OutlookApplication := Unassigned;
end;
end;
procedure TForm3.Button1Click(Sender: TObject);
begin
//Formatierung ist nur möglich, wenn nicht Word als EmailEditor eingesetzt wird.
Proc_OutlookEmailErstellen('Dies ist ein <u>Test</u> und hier steht dein Text',
'TestBetreff',
'Test@irgendwas.de; [email]Test2@irgendwas.de[/email]',
true);
end;
lediglich, wenn Word verwendet wird, wird die Formatierung nicht übernommen, müßte man wahrscheinlich komplett alleine formatieren. Aber das ist mir momentan egal, das benötige ich nicht, ein normaler Text reicht mir.
Danke, hast mir sehr geholfen
Gruß Frank