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

Visual FoxPro 9桌面应用如何使用受支持方式发送电子邮件

Visual FoxPro 9 桌面应用邮件发送官方支持方案

以下是目前受微软官方支持的几类实现方案:

1. Outlook 对象模型(OOM)调用

  • 适用场景:终端用户设备已安装Outlook 2010及以上版本的企业环境
  • 实现逻辑:直接在VFP中创建Outlook应用实例,调用原生接口构造并发送邮件,发送记录可自动同步到Outlook客户端发件箱
  • 示例代码:
LOCAL oOutlook, oMail
oOutlook = CREATEOBJECT("Outlook.Application")
oMail = oOutlook.CreateItem(0)
WITH oMail
    .Recipients.Add("收件人邮箱地址")
    .Subject = "邮件主题"
    .Body = "邮件正文内容"
    * 附件添加逻辑:.Attachments.Add("本地文件完整路径")
    .Send()
ENDWITH
RELEASE oMail, oOutlook
  • 注意:首次调用会触发Outlook安全提示,可通过企业组策略配置信任VFP应用后消除。

2. 系统内置CDOSYS组件调用

  • 适用场景:无Office依赖的场景,Windows XP及以上系统原生自带该组件,需注意:该组件和已废弃的CDO 1.2.1不属于同一产品,是Windows系统官方支持的内置邮件组件
  • 实现逻辑:调用cdosys.dll提供的接口,直接对接SMTP服务发送邮件,无需依赖本地邮件客户端
  • 示例代码片段:
LOCAL oMsg, oConf
oMsg = CREATEOBJECT("CDO.Message")
oConf = CREATEOBJECT("CDO.Configuration")
WITH oConf.Fields
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "你的SMTP服务器地址"
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25 && 加密传输可填465/587端口
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
    .Item("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
    .Item("http://schemas.microsoft.com/cdo/configuration/sendusername") = "发件人账号"
    .Item("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "发件人授权密码"
    .Update()
ENDWITH
oMsg.Configuration = oConf
WITH oMsg
    .From = "发件人邮箱"
    .To = "收件人邮箱"
    .Subject = "邮件主题"
    .TextBody = "邮件正文"
    * 附件添加逻辑:.AddAttachment("本地文件完整路径")
    .Send()
ENDWITH
RELEASE oMsg, oConf

3. .NET互操作调用System.Net.Mail类库

  • 适用场景:需要适配现代SMTP服务(包括要求TLS加密、OAuth2认证的企业邮箱、Outlook 365、Gmail等)的场景,终端设备需安装.NET Framework 4.0及以上版本,是目前兼容性最强的官方支持方案
  • 实现逻辑:VFP9支持调用.NET程序集,直接使用微软官方维护的System.Net.Mail命名空间下的类实现邮件发送,完全符合现代邮件传输安全规范
  • 示例代码片段:
LOCAL oSmtp, oMail
* 初始化SMTP客户端
oSmtp = CREATEOBJECT("System.Net.Mail.SmtpClient", "SMTP服务器地址", 587)
WITH oSmtp
    .EnableSsl = .T.
    .Credentials = CREATEOBJECT("System.Net.NetworkCredential", "发件人账号", "发件人授权密码/应用密码")
ENDWITH
* 构造邮件
oMail = CREATEOBJECT("System.Net.Mail.MailMessage", "发件人邮箱", "收件人邮箱", "邮件主题", "邮件正文")
* 附件添加逻辑:oMail.Attachments.Add(CREATEOBJECT("System.Net.Mail.Attachment", "本地文件完整路径"))
* 执行发送
oSmtp.Send(oMail)
RELEASE oMail, oSmtp

方案选择参考

  • 终端环境统一安装Outlook的企业场景,优先选择Outlook对象模型方案,部署成本最低
  • 需要无依赖适配老旧Windows环境,选择CDOSYS组件方案
  • 需要对接支持OAuth2认证的现代云邮箱服务,优先选择.NET互操作方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:54:06