2011-02-05 68 views
2

In this question I just asked我告訴我通過從我的應用程序發送數據到Outlook與MAPI準備Outlook郵件。Delphi:如何在不使用MAPI的情況下在Outlook中撰寫電子郵件?

但這樣我有一個主要障礙:我無法發送消息正文的格式化文本。我的表單有一個rtf字段,我刪除rtf數據,然後準備Outlook郵件。

怎麼可能做到這一點(創建一個Outlook發送電子郵件準備發送),而不使用mapi,並保持格式,以某種方式「rtf html」......有人已經有這個代碼?

+1

爲什麼您認爲使用MAPI與使用格式有關?似乎與我正交。 – 2011-02-05 15:14:00

+0

您是否真的需要使用Outlook撰寫和發送電子郵件?爲什麼不通過使用Indy和IdSmtp的SMTP服務直接發送? – 2011-02-07 03:07:22

+0

@ Paul-Jan我不是MAPI專家,我只是使用由其他人編寫的代碼來準備由Outlook發送的電子郵件。所以對我來說,MAPI是一個新世界,我可以研究它,但我正在提問以避免研究無用的東西。 – LaBracca 2011-02-07 08:03:06

回答

2

您可以使用微軟的Collaboration Data Objects,但它受Outlook安全修補程序的限制。屬於Outlook Redemption的兌換數據對象適用於安全修補程序。我已經使用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('[email protected]'); 
    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

相關問題