如何使用用户的默认电子邮件客户端弹出撰写/创建邮件对话框?

2023-11-24

用例很简单。在某个时间点,我需要能够向用户展示他熟悉的撰写电子邮件对话框(Outlook 或其他)

  • “发件人”、“收件人”、“主题”等字段已填充了某些应用程序确定的值。
  • 该电子邮件还会附带一个附件。

除非用户明确同意,否则不应发送邮件。

我在 VB6 时代做过一次。现在不知道怎么做。我只记得这很简单。

托管应用程序、C#、.net 3.0+

Update#1:是的,似乎 mailto 删除了对附件的支持(作为安全风险?)。我试过

您需要包含 ShellExecute 签名如此处所述。我从中得到的只是 5SE_ERR_ACCESSDENIED2 只是为了一些变化

string sMailToLink = @"mailto:[email protected]?subject=Hey&body= yeah yeah yeah";
IntPtr result = ShellExecute(IntPtr.Zero, "open", sMailToLink, "", "", ShowCommands.SW_SHOWNORMAL);
Debug.Assert(result.ToInt32() > 32, "Shell Execute failed with return code " + result.ToInt32());

相同的 MailtoLink 与 Process.Start 完美配合...但是只要你不提及附件.

System.Diagnostics.Process.Start(sMailToLink);

其他选项是使用 Outlook 对象模型来执行此操作。但我被告知,这需要您根据安装的 Outlook 的确切版本添加程序集引用。此外,如果用户不喜欢使用 MS 发送电子邮件,这种情况也会发生。

下一个选项是 Mapi 和一个叫做Mapi33.. 状态仍在进行中。仍愿意听取建议。


您可以创建一个流程对象并让它调用“mailto:[电子邮件受保护]?subject=My+New+Subject"。这将导致系统使用其默认处理程序对 mailto 进行操作,但是,虽然您可以设置主题,但这不会处理添加附件。我承认我并不完全确定如何在不编写邮件插件的情况下强制添加附件。

流程代码为:

System.Diagnostics.Process.Start("mailto:[email protected]?subject=My+New+Subject");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用用户的默认电子邮件客户端弹出撰写/创建邮件对话框? 的相关文章

  • NHibernate同时将两列作为复合键和外键

    首先 我在网上和这里进行了彻底的搜索 但没有找到解决手头任务的明确解决方案 如果我的搜索不够准确并且这个答案已经发布 我深表歉意 问题 我有一张桌子 该表必须在两个字段上有一个主键 并且其他字段包含一些数据 作为主键的两个字段也必须是外键
  • 用于清理 openssl EVP_PKEY 私钥内存的 C 代码

    我开始学习 C C 中的 OpenSSL 编程 我遇到的一个问题是 如何安全地清除私钥的内存 例如 我可能有代码 EVP PKEY private key PEM read bio PrivateKey bio RSA r EVP PKEY
  • "/>

    Error 5 expected Css test css gt gt 我需要给吗 在这里 因为我的解决方案仍然无法正常工作 它开始给出一些其他错误 您需要添加一个等号 如下所示 Css test css gt gt 解释 块将整个语句或块
  • CMake source_group() 无法在分层项目设置中正常工作

    在进行更改以使 CMake 项目具有分层文件夹管理后 source group 似乎不再正常工作 CMake 只是将所有内容转储到默认过滤器中 我尝试了各种正则表达式来从父级获取每个源文件的相对文件路径 甚至对父级 CMakeLists t
  • VS 2012 中缺少实体数据模型

    添加新项目时 我在 数据 选项卡下找不到实体数据模型 我查看了几个问题和答案以及有关此问题的信息 但没有一个解决方案有效 我已修复 卸载并重新安装 手动安装 EF Tools 包并尝试卸载所有 VS 相关程序 我还尝试在不同的 NET 框架
  • 哪种本机 dotNet 数据类型最适合传递 SQL Server HierarchyId 值?

    具体来说 我们有一个接受 HierarchyId 作为参数的 SQL Server 存储过程 并且通常我们的存储过程上有一个 SOAP 层 允许通过 SOAP 调用它们 SOAP 服务是使用 C 方法上的 WebMethod 属性来实现的
  • “char *”类型的参数与“LPWSTR”类型的参数不兼容

    以前可能有人问过这个问题 但我似乎找不到解决方案 std string GetPath char buffer MAX PATH GetSystemDirectory buffer MAX PATH strcat buffer versio
  • 拖动用户控件,但将其保留在 WPF 中其父级的边界内

    我有一个用户控件 正在将其拖动到网格内 Z Index 设置得相当高 这样我就可以将其保持在其他孩子之上 拖动控件效果很好 但如果用户想要将控件移到网格之外 它会允许这样做 How do I keep it from leaving the
  • if constexpr 与 sfinae

    随着引入if constexpr in c 17 通过使用编译时 SFINAE 解决了一些问题c 14 c 11现在可以使用解决if constexpr 具有更简单的语法 例如 考虑以下编译时递归的基本示例 以生成打印可变数量参数的子例程
  • C# P2P聊天应用程序设计

    我想创建一个不使用显式服务器的简单聊天应用程序 主要要求是用户可以同时与许多朋友聊天 就像在 Skype 等上一样 我在这里指的不是会议聊天 而是多个单独的聊天窗口 目前 我只想要一个 LAN 消息应用程序 但如果设计能够轻松扩展到 Int
  • C语言中的积分提升和平衡有什么区别?

    积分提升和平衡有什么区别 我们是否可以总结这两条规则 即在执行任何操作 逻辑运算符 除外 之前 任何类型都至少转换为 int 或 unsigned int 类型 如果任何操作数的类型为更大 则转换为更大的类型比整数 积分促销 是旧的C90术
  • 如何使用 Dapper 从 .NET 7 执行 Postgresql 函数,而不列出所有参数的数据类型

    我正在尝试将我的 NET 5 Web API 代码传输到 NET 7 我有一个名为的单例服务DataManager它实现了接口IDataManager 其中一项功能是Execute还有其他 C 函数 称为 Get GerMany 以及 In
  • 有没有工具可以检测 Visual C++ 6.0 上的缓冲区溢出? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 由于堆问题 我一直遇到崩溃问题 所以我猜想某个地方发生了缓冲区溢出 我如何检测它 I use Compuware 边界检查器 http w
  • 状态代码:404,原因短语:“未找到”,版本:1.1,

    我使用 Web api 自托管 public class TestController ApiController HttpPost public void Testp FromBody string title Console Write
  • static_assert 有什么作用,你会用它做什么?

    你能举个例子吗static assert C 11 会优雅地解决手头的问题吗 我熟悉运行时assert 我应该选择什么时候static assert 超过常规assert 另外 在boost有一种东西叫做BOOST STATIC ASSER
  • 我可以以编程方式更改 Xamarin.Forms 中的 styles.xml 吗?

    我们有一个可自定义颜色的应用程序 这使得列表视图中所选项目的橙色 Android 默认值有时看起来很糟糕 我们想要更改列表视图所选项目的颜色 我知道如何在我们页面的后台代码 xaml cs 中执行此操作 并且我知道您可以在 styles x
  • 从文本文件中读取行并存储到数组中

    如何从文本文件中读取行并将其存储到数组中 例如 我有一个包含 45 行不同行的文本文件 我的尝试 int main int a 45 ifstream myfile enroll assg txt if myfile cout lt lt
  • 在使用 stop_token 等待条件变量_any 时是否需要拥有锁来请求停止?

    在等待条件变量时 更改谓词状态的线程必须拥有锁 因此在唤醒期间不会错过更新 根据文档 这是必要的 即使在使用原子变量时也是如此 不过我不确定是否request stop 已经正确处理了 那么问题是 这两个选项中哪一个是正确且符合标准的呢 j
  • 单击用户控件时如何防止窃取焦点? [复制]

    这个问题在这里已经有答案了 我希望能够单击我的用户控件 而不让它从任何其他控件中窃取焦点 我知道当你点击标签时它不会夺走焦点 如何才能做到这一点 尝试禁用您的控件ControlStyles Selectable http msdn micr
  • 为什么我们从 MultiByte 转换为 WideChar?

    我习惯于处理 ASCII 字符串 但现在使用 UNICODE 我对一些术语感到非常困惑 什么是多字节字符以及什么是widechar有什么不同 多字节是指在内存中包含多个字节的字符吗 widechar只是一个数据类型来表示吗 为什么我们要从M

随机推荐

  • 如何列出数据库中的所有 git 对象?

    有没有比以下更好的方法来获取存储库中所有对象的 SHA1 原始列表 ls git objects and cat git objects pack idx git show index 我知道关于git rev list all但这仅列出了
  • Chrome 中的 HTML5 视频标签 - wmv

    我需要制作一个显示视频的页面 Firefox 和 Opera 支持 OGG 格式 没有问题 Chrome 是 愚蠢 的 不识别 OGG Windows 上的 Chrome 知道如何处理 WMV 吗 我已经对它们进行了编码 但我无法重新编码新
  • 将 Bootstrap 5 与 Vue 3 结合使用

    我想将 Bootstrap 5 与 Vue 3 结合使用 由于 Bootstrap 5 使用普通 JS 无 JQuery 我可以直接在 Vue 3 项目中使用 Bootstrap 5 不使用 Bootstrap Vue 吗 有人可以指导我如
  • 为什么示例中的 Bootstrap 5 中的折叠不起作用?

    我尝试使用引导崩溃 我复制了该示例 但单击按钮时没有任何反应 不知道出了什么问题 我认为 js 无法正常工作
  • .NET 列表视图刷新

    我有以下代码 它基本上从数据库中获取值并填充列表视图 using IDataReader reader cmd ExecuteReader lvwMyList Items Clear while reader Read ListViewIt
  • 为什么在 PHP 中使用“use”关键字来导入核心标识符?

    有时在一些图书馆 比如thephpleague csv 我看到use关键字来导入核心标识符 例如函数 类或常量 但我根本不明白为什么要导入它们 请参见以下示例 use Generator use SplFileObject use func
  • 谷歌云存储加入多个csv文件

    我将数据集从 Google BigQuery 导出到 Google Cloud Storage 考虑到文件大小 BigQuery 将文件导出为 99 个 csv 文件 然而 现在我想连接到我的 GCP 存储桶并使用 Spark 执行一些分析
  • 即使使用 nohup 子进程也会被杀死

    我在用着subprocess Popen启动多个进程 代码是这样的 while flag gt 0 flag check flag c MyClass num process 10 c launch MyClass如果类似以下内容 MyCl
  • Android MediaMetadataRetriever 从大多数键返回空值

    我想从我的媒体文件 主要是 mp3 中获取信息 但我从我想要的那些值中只得到 null 我已经尝试过所有按键extractMetadata key 我是否跳过 遗漏了某些内容 代码依据 MediaMetadataRetriever f ne
  • 为什么不能对函数的返回值使用数组索引? [关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 为什么我不能这样做 explode 1 2 3 1 0 所有其他语言都支持它 我
  • rm、cp、mv 命令的参数列表太长错误

    我在 UNIX 的一个目录下有数百个 PDF PDF 的名称非常长 大约 60 个字符 当我尝试使用以下命令一起删除所有 PDF 时 rm f pdf 我收到以下错误 bin rm cannot execute Argument list
  • 如何从 flutter 中的数据快照获取特定值?

    我有这个数据快照 post1 pic https i redd it ni6zhxh874011 jpg title title desc desc post2 pic https i redd it krj9miojg5011 jpg t
  • Firebase 倒计时器在多个客户端之间同步

    我将尝试使用 Angular JS 为特定的利基市场构建一个便士拍卖网站 我正在尝试计划倒计时器 并且我一直渴望尝试一下 firebase 我昨天有一个想法 让每次拍卖在实际数据库中都有一个倒计时 因为通过 2 路数据绑定 人们的客户端将始
  • Xcode 4 和 Interface Builder:编辑垂直间距约束(锚定顶部,而不是底部)

    我有一个小部件在设备上未正确布局 其looks在 IB 中还可以 但不太正确 该小部件是一个标签 位于屏幕中间 Interface Builder 为其提供了带有 底部锚点 的垂直空间约束 在这里 底部意味着屏幕的底部 而不是下面的小部件
  • jQuery 自动完成(远程)- 示例

    我真的希望避免发布新问题 但我找不到 jQuery 自动完成远程功能的功能示例 其中包括调用页面和 搜索 页面 jQueryUI 演示和文档 部分不包含 search php 的源代码 我尝试了数十种组合 但这是我开始的组合
  • 什么是&=和|=

    我正在查看大型代码库中的一些 VC 代码 并发现了以下内容 if nState TOOL TIPS VISIBLE nState TOOL TIPS VISIBLE else nState TOOL TIPS VISIBLE break C
  • 是否有键盘快捷键可以浏览 Jupyter 笔记本中的历史记录

    有没有一种简单的方法可以浏览命令历史记录并在 Jupyter 笔记本中重用旧命令 有些相当于 iPython 控制台中使用的向上 向下箭头或 Mathematica 中使用的 符号 虽然对于专家来说答案可能看起来微不足道 但对于新手来说确实
  • PHP计算目录和子目录中的文件总数函数

    我需要获取指定目录中 JPG 文件的总数 包括其所有子目录 没有子子目录 结构如下 dir1 2 files subdir 1 8 files total dir1 10 个文件 dir2 5 files subdir 1 2 files
  • 多线程还是尽可能少的线程?

    作为一个业余项目 我目前正在为我曾经玩过的一款古老游戏编写服务器 我试图使服务器尽可能松散耦合 但我想知道对于多线程来说什么是好的设计决策 目前我有以下操作顺序 启动 创建 gt 服务器 监听客户端 创建 gt 客户端 监听命令并发送周期数
  • 如何使用用户的默认电子邮件客户端弹出撰写/创建邮件对话框?

    用例很简单 在某个时间点 我需要能够向用户展示他熟悉的撰写电子邮件对话框 Outlook 或其他 发件人 收件人 主题 等字段已填充了某些应用程序确定的值 该电子邮件还会附带一个附件 除非用户明确同意 否则不应发送邮件 我在 VB6 时代做