加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

delphi – 以HTML格式发送电子邮件

发布时间:2020-12-15 10:06:19 所属栏目:大数据 来源:网络整理
导读:目前我们正在使用MAPI从我们的应用程序发送纯文本电子邮件.当用户调用此函数时,我们指定对话框标志,以便电子邮件将显示在他们的电子邮件客户端中,然后他们可以修改并发送它. 我们想要修改电子邮件并以HTML格式发送. 根据此链接,MSDN链接MAPI不适用于此http:/
目前我们正在使用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没有任何经验,所以我不能说这个项目有多容易/多难.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读