In this question I just asked我告诉我通过使用MAPI将数据从我的应用程序发送到Outlook来准备Outlook邮件。
但是这样我有一个主要障碍:我无法为邮件正文发送格式化文本。我的表单有一个rtf字段,我删除rtf数据然后准备Outlook邮件。
如何在不使用mapi的情况下做同样的事情(创建一个可以发送的Outlook外发电子邮件),并保持格式化,以某种方式“rtf到html”......有没有人已经有这个代码?
答案 0 :(得分:4)
使用Delphi提供的Ole Automation Server组件包装器。我最近在另一个问题上挖出的一个例子可以在这里找到:Easiest way to compose Outlook 2010 mail from Delphi?
答案 1 :(得分:3)
您可以使用Microsoft的Collaboration Data Objects,但它受Outlook安全修补程序的限制。作为Outlook Redemption一部分的Redemption Data Objects围绕Security补丁工作。我使用RDO在Outlook中创建RTF电子邮件。
以下是使用RDO创建电子邮件,插入RTF格式文本并显示电子邮件的示例程序,以便在发送之前对其进行编辑。
procedure TForm1.RTFemail;
var
Session, Drafts, Mail, Recip: OleVariant;
s : string;
begin
Session := CreateOleObject('Redemption.RDOSession');
Session.Logon;
Drafts := Session.GetDefaultFolder(olFolderDrafts);
Mail := Drafts.Items.Add;
Recip := Mail.Recipients.Add('nobody@gmail.com');
Recip.Type := olTo;
Recip.Resolve;
Mail.Subject := 'Testing Redemption';
s := '{\rtf1\ansi\ansicpg1252\deff0\deflang1033{\fonttbl{\f0\fnil'+
'\fcharset0 Arial;}}\viewkind4\uc1\pard\fs16 This is \ul '+
'underlined\ulnone , \i italic\i0 , and \b bold\b0 .\par }';
Mail.RTFBody := s;
Mail.Save;
Mail.Display;
end;
它使用Outlook 2003生成以下内容
答案 2 :(得分:0)
Exchange Web Services (EWS)作为MAPI协议的替代方案在Exchange 2007中引入,它是一种基于SOAP的协议。
我猜它不会启动或激活Outlook客户端,但可以在“草稿”文件夹中create a new E-mail message(参见CreateItem参考号)。
Body element documentation 表示支持纯文本和HTML。