我一直在使用:
ShellExecute(Self.Handle,
nil, PCHAR(format('mailto:%s ?Subject=Assunto: &Body=',[_lEmails ])),
nil,
nil,
SW_NORMAL);
发送电子邮件。没有正文文本,因此在电子邮件客户端中具有自动签名的用户会自动获得这些签名。
现在我想让用户也可以插入文本,但是如果他们这样做了,文本就会出现在那里,但是没有签名。有没有办法“强制”这样做。
谢谢
发布于 2012-06-12 22:05:21
你可以使用MAPI ( Messaging Applications Programming Interface
),它可以让你更好地控制电子邮件,并允许像附件这样的东西。您还可以选择是否显示用户的电子邮件客户端“撰写”窗口或直接添加到发件箱。(由于Windows安全性的更改,发件箱功能现在通常受到限制,尤其是在涉及MS Outlook的情况下。)
最快、最简单的方法是使用类似JEDI Code Library JCLEMail
的东西。它是一个围绕SimpleMAPI的包装器,这使得它非常简单(代码取自一个较旧的应用程序,并且基于JCL demo中的一个示例):
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
的缺点是,它可能是一个短期的解决方案(尽管它在Windows64位和更早的版本中仍然存在,但我不能为Win7 8说话)。根据MSDN的说法,
不鼓励使用简单的
。它可能会在后续版本的Windows中更改或不可用。
MAPI
的缺点是它依赖于正在安装的MAPI
客户端。幸运的是,几乎所有支持mailto
的软件都应该支持MAPI
;例如,Outlook支持,Mozilla Thunderbird也支持。
发布于 2012-10-13 13:41:41
在确保默认签名出现时(如果这是问题的症结所在,如果不是抱歉,我读错了),那么看起来你可能不走运(因为我一直在尝试这样做)。
下面的MS文章似乎说“不”。这似乎意味着Outlook 2010版本在通过MAPI创建电子邮件时不支持默认电子邮件签名。它似乎没有提供太多的理由,并建议你简单地使用电子邮件对话框中的“插入签名”选项(对我来说,这不是一个真正的帮助,当你可能希望它是默认的,也许对于电子邮件只是“去”而不需要用户干预)。
https://stackoverflow.com/questions/11001835
复制