You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Delphi中如何使用TSendMail创建带附件的可编辑电子邮件

解决方案
  • 属性配置修正
    TSendMail动作默认未开启弹窗配置,会静默执行后台发送逻辑,即使Execute返回成功也不会唤起邮件编辑窗口。你需要在调用执行前显式配置相关属性:
// 强制开启编辑窗口弹窗
InternetSendMail1.SendOptions := [soShowDialog];
// 可预设内容,也可留空让用户自行填写
InternetSendMail1.Recipients.Add(''); // 收件人留空
InternetSendMail1.Subject := '预设邮件主题';
InternetSendMail1.Body.Text := '预设正文内容';
// 添加附件,支持多次调用添加多个附件
InternetSendMail1.Attachments.Add('C:\示例路径\附件文件.pdf');

// 执行调用
var OK := InternetSendMail1.Execute;
CodeSite.Send('执行结果', OK);
  • 架构匹配检查
    如果修改属性后仍无响应,大概率是应用编译架构和邮件客户端架构不兼容:
    如果你编译的是32位VCL应用,但系统安装的是64位Thunderbird,反之亦然,都会出现MAPI调用无响应但返回成功的情况。你可以将VCL应用的编译架构调整为和Thunderbird一致的架构即可解决。
  • 权限问题排查
    如果你的VCL应用配置了requireAdministrator运行权限,而Thunderbird是以普通用户身份运行,Windows UAC权限隔离机制会阻止高权限进程唤起低权限进程的窗口,只需将应用运行权限调整为普通用户权限即可。

如果以上方法都无法解决,可以直接调用Windows原生MAPISendMail接口实现相同需求,兼容性优于VCL封装的TSendMail动作。


内容的提问来源于stack exchange,提问作者user1580348

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.12 13:18:03