0

我一直在使用:

        ShellExecute(Self.Handle,
            nil, PCHAR(format('mailto:%s ?Subject=Assunto: &Body=',[_lEmails ])),
            nil,
            nil,
            SW_NORMAL);

发送电子邮件。没有正文文本,因此在其电子邮件客户端中具有自动签名的用户会自动获得这些内容。

现在我想让用户也可以插入文本,但如果他们这样做,文本会到达那里但没有签名。有没有办法“强制”这个。

谢谢

4

2 回答 2

4

您可以改用MAPI (the Messaging Applications Programming Interface),它可以让您更好地控制电子邮件,并允许使用附件等内容。您还可以选择是显示用户的电子邮件客户端“撰写”窗口还是直接添加到发件箱。(由于 Windows 安全性的变化,发件箱功能现在通常受到限制,尤其是在 MS Outlook 方面。)

最快、最简单的方法是使用JEDI Code Library JCLEMail之类的东西。它是 SimpleMAPI 的包装器,这使得它非常容易(代码取自一个较旧的应用程序,并且基于 JCL 演示中的示例):

EMail := TJclEMail.Create;
try
  EMail.Recipients.Add(AnsiString(EMailAddress), AnsiString(EMailName));
  EMail.Subject := AnsiString(Subject);
  EMail.Body := AnsiString(Body);
  EMail.HtmlBody := False;  // True if it's HTML email

  // Send attachment if wanted
  EMail.Attachments.Add(AnsiString(FileName));
  EMail.Send(True);   // True to show default email, false to add to outbox
finally
  EMail.Free;
end;

缺点SimpleMAPI是它可能是一个短期的解决方案(尽管它仍然存在于 Win7 64 位及更早版本中,但我不能代表 Windows 8)。根据MSDN

[不鼓励使用 Simple MAPI。它可能在 Windows 的后续版本中被更改或不可用。]

缺点MAPI是它依赖于MAPI安装的客户端。幸运的是,几乎所有支持的软件也mailto应该支持MAPI;例如,Outlook 可以,Mozilla Thunderbird 也可以。

于 2012-06-12T22:05:21.003 回答
2

在确保出现默认签名时(如果这是问题的症结所在,如果不是对不起,我误读了),那么您可能会不走运(因为我一直在尝试这样做)。

下面的 MS 文章似乎说“不”。这似乎意味着直到 2010 年的 Outlook 版本在通过 MAPI 创建电子邮件时不支持默认电子邮件签名。它似乎没有提供太多理由,并建议您只需使用电子邮件对话框中的“插入签名”选项(对我来说,当您可能希望它默认时,这并不是真正的帮助,也许只是电子邮件“去”无需用户干预)。

http://support.microsoft.com/kb/2544665

于 2012-10-13T13:41:40.943 回答