Delphi:如何在不使用MAPI的情况下在Outlook中撰写电子邮件?

时间:2011-02-05 13:43:39

标签: delphi email outlook mapi

In this question I just asked我告诉我通过使用MAPI将数据从我的应用程序发送到Outlook来准备Outlook邮件。

但是这样我有一个主要障碍:我无法为邮件正文发送格式化文本。我的表单有一个rtf字段,我删除rtf数据然后准备Outlook邮件。

如何在不使用mapi的情况下做同样的事情(创建一个可以发送的Outlook外发电子邮件),并保持格式化,以某种方式“rtf到html”......有没有人已经有这个代码?

3 个答案:

答案 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生成以下内容

enter image description here

答案 2 :(得分:0)

Exchange Web Services (EWS)作为MAPI协议的替代方案在Exchange 2007中引入,它是一种基于SOAP的协议。

我猜它不会启动或激活Outlook客户端,但可以在“草稿”文件夹中create a new E-mail message(参见CreateItem参考号)。

Body element documentation 表示支持纯文本和HTML。