目前我们正在使用MAPI从我们的应用程序发送纯文本电子邮件.当用户调用此函数时,我们指定对话框标志,以便电子邮件将显示在他们的电子邮件客户端中,然后他们可以修改并发送它.
我们想要修改电子邮件并以HTML格式发送.
根据此链接,MSDN链接MAPI不适用于此http://support.microsoft.com/kb/268440
我在ExpertsExchange上看到一篇文章说你可以使用MAPI来做这件事,但是我无法让这个例子与Outlook一起工作(还没有试过任何其他客户端)
procedure ShowMailDlg(ToName,Address,HTMLMessage: string); var li: integer; lMessage: TMapiMessage; lRecipArray: array of TMapiRecipDesc; lREs: DWord; begin SetLength(lRecipArray,1); lRecipArray[0].ulRecipClass:=MAPI_TO; lRecipArray[0].lpszName:=pChar(ToName); lRecipArray[0].lpszAddress:=pChar(Address); lMessage.ulReserved:=0; lMessage.lpszSubject:=nil; lMessage.lpszNoteText:=pChar(HTMLMessage); lMessage.lpszMessageType:= nil;//pChar('HTML'); lMessage.lpszDateReceived:=nil; lMessage.lpszConversationID:=nil; lMessage.flFlags:=0; lMessage.lpOriginator:=nil; lMessage.nRecipCount:=length(lRecipArray); lMessage.lpRecips:=PMapiRecipDesc(lRecipArray); lMessage.nFileCount:=0; lMessage.lpFiles:=PMapiFileDesc(nil); lRes:=MapiSendMail(0,lMessage,MAPI_DIALOG,0); end;
任何人都有任何想法我怎么能这样做.我可以自动化Outlook但我想保持它与电子邮件客户端(因此MAPI)相当独立
谢谢
更新:感谢大家的建议.该功能的问题并非使用频繁,因此要求用户配置SMTP详细信息并不是一个真正的选择.我想我们会坚持使用纯文本电子邮件.
谢谢
解决方法
MAPI不支持HTML格式的邮件.从
Microsoft开始:“扩展消息传递应用程序编程接口(MAPI)不应用于生成HTML格式的消息.另外,请考虑使用Microsoft Outlook对象模型,CDONTS,CDOSYS,CDOEX或第三方SMTP控件.”
我会回应有关通过Indy发送的评论.我发布了一个单元,可以用简单的here将Indy发送到HTML上,或者随意编写自己的单元.如果您真的想要使消息可编辑,请尝试WPTools和Indy的组合. WPTools对HTML标记有很好的支持,然后你可以通过Indy发送结果消息.
我对Synapse没有任何经验,所以我不能说这个项目有多容易/多难.