您可以改用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 也可以。