文本框中的超链接电子邮件地址并通过 Outlook 发送

2023-12-05

我正在开发一个 wpf 应用程序,我有一个客户信息部分,我可以在其中记录我的客户信息。在本节中,我使用一个文本框来记录客户的电子邮件地址。但现在我想制作电子邮件地址超链接,并通过 Outlook 电子邮件链接电子邮件地址,比如说,如果我单击电子邮件地址,它会自动打开 Outlook 电子邮件,以便我可以通过 Outlook 发送电子邮件。谢谢。

我想要的是一个标签或文本块,其文本是Email左侧有一个文本框(不需要绑定到文本框中的文本),右侧有一个文本框,您可以在其中键入电子邮件地址。在文本框中输入有效的电子邮件地址后,您可以单击该电子邮件地址,它将自动打开 Outlook。在里面ToOutlook字段,电子邮件地址就是您输入的内容。(上一个问题的评论太长,所以我将其作为一个新问题,旧问题链接是链接电子邮件地址并通过 Outlook 发送电子邮件

<TextBlock Text="Email" Grid.Row="11" x:Name="lblEmail" VerticalAlignment="Top"/> 
    <TextBox Grid.Column="1" Grid.Row="11" x:Name="txtEmail" VerticalAlignment="Top" 
        TextDecorations="UnderLine" Foreground="Blue" Text="{Binding 
        Email, UpdateSourceTrigger=PropertyChanged, ValidatesOnDataErrors=True, 
        ValidatesOnExceptions=True, NotifyOnValidationError=True}">
</TextBox> 

好吧,让我们再试一次...首先我们有一个TextBox用户输入电子邮件地址:

<TextBox x:Name="EmailTextBox" />

然后我们有一个Hyperlink其对象NavigateUri属性是绑定到的数据Textbox.Text领域的EmailTextBox object:

<Hyperlink RequestNavigate="Hyperlink_RequestNavigate" NavigateUri="{Binding Text, 
    ElementName=EmailTextBox, UpdateSourceTrigger=PropertyChanged}">
    <TextBlock Text="Click here to e-mail" />
</Hyperlink>

然后我们就有了RequestNavigateEvent验证电子邮件地址的处理程序(正则表达式取自这个帖子):

public void Hyperlink_RequestNavigate(object sender, RequestNavigateEventArgs e)
{
    Hyperlink hyperlink = sender as Hyperlink;
    if (hyperlink == null) return;
    if (Regex.IsMatch(hyperlink.NavigateUri.ToString(), @"^([\w\.\-]+)@([\w\-]+)((\.(\w){2,3})+)$"))
    {
        string address = string.Concat("mailto:", hyperlink.NavigateUri.ToString());
        try { System.Diagnostics.Process.Start(address); }
        catch { MessageBox.Show("That e-mail address is invalid.", "E-mail error"); }
    }
}

现在,我仍然无法测试其中的任何一个,因此您可能必须自己修复一些小错误,但这大致是您必须做的。请随意添加评论,但这次不要让评论部分比问题部分大。 ;)

更新>>>

好吧,问题是hyperlink.NavigateUri实际上是一个Uri对象而不是一个string所以我们需要打电话ToString() on it.

以防万一您需要它,您可以更换您的线路Hyperlink_RequestNavigate处理程序使用此行设置电子邮件的主题:

string address = string.Concat("mailto:", hyperlink.NavigateUri.ToString(), 
"?subject=This is the subject");

这也可以进一步扩展以添加部分(或全部)主体:

string address = string.Concat("mailto:", hyperlink.NavigateUri.ToString(), 
"?subject=This is the subject&body=Dear Sir/Madam,");
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

文本框中的超链接电子邮件地址并通过 Outlook 发送 的相关文章

  • 如何将 HTML 链接放入电子邮件正文中?

    我有一个可以发送邮件的应用程序 用 Java 实现 我想在邮件中放置一个 HTML 链接 但该链接显示为普通字母 而不是 HTML 链接 我怎样才能将 HTML 链接放入字符串中 我需要特殊字符吗 太感谢了 Update 大家好你们好 感谢
  • 基于另一个组合框的所选项目绑定组合框 - MVVM WPF

    我目前有一个组合框 其中填充了艺术家姓名 一旦选择了艺术家 我需要将其绑定到另一个组合框 在我看来 这些设置如下
  • 是否可以在事件处理程序开始期间和结束期间更改一次视图?

    我只需单击一下即可从数据库获取数据 我有一个事件处理程序 触发时应在状态栏中显示 数据检索 并应在事件处理程序结束之前再次更改为 就绪 但文本只更新一次 即第二次 准备就绪 一般是怎么做的 private void Next Click o
  • 在Linux上编译C# + WPF以便在Windows上运行

    我有一个 C 应用程序 其中某些部分是使用 WPF 编写的 Mono 不支持 可以在 Linux 上编译这个应用程序吗 最终 该应用程序将在 Windows 上运行 但它是更大框架的一部分 并且我们的整个构建过程在 Linux 上运行 因此
  • 如何使用DocumentViewer显示流程文档?

    我的资源中有一个简单的流程文档 FlowDocument1 xaml
  • 有没有基于 WPF 的 Markdown 渲染器? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我们有基于 WPF 的应用程序 我们有单独的字符串存储库 其中的文本在网络中进行编辑 在我们的 WPF
  • 如何使用 WPF 从 XML 文件创建树视图?

    这是 XML 文件
  • 将多个实时视频流拉入 WPF

    我想创建一个应用程序 将由同轴电缆 hdmi 或其他标准提供的多个实时视频源拉入 WPF 中进行操作 即应用一些转换或像素着色器 然后将其输出到监视器 开始使用这个应用程序时我会考虑什么 有没有任何硬件可以让事情变得更容易 如果您通过同轴电
  • 不支持 URI 前缀

    我正在尝试使用以下方法加载和播放波形文件 SoundPlayer simpleSound new SoundPlayer pack application MyAssembly component Sounds 10meters wav s
  • WPF 中处理系统关闭

    如何在 WPF 中重写 WndProc 当我的窗口关闭时 我尝试检查我正在使用的文件是否被修改 如果是 我必须提示用户 你想保存更改吗 消息 然后关闭正在使用的文件和窗口 但是 当我的窗口仍然打开时 我无法处理用户重新启动 关闭 注销的情况
  • 增加 WPF 弹出动画的持续时间

    我有一个 WPF PopUp 控件 用于显示菜单叠加层 并且使用默认的淡入淡出动画 不过我想让动画需要更长的时间才能完成 我可以在 XAML 中做到这一点吗 你能在这里发布相关的xaml代码吗 否则 您可以查看这些链接以开始使用 xaml
  • 如果.Net Core可以在Windows上运行,为什么不能在.Net Framework中引用.Net Core DLL?

    我明白为什么 Net Framework 可能会在 Net Core IE 中导致问题 因为不存在特定于 Windows 平台的 API 但是为什么不能直接引用 Net Core 作为 Net Framework 中的库呢 如果 Net C
  • 如何在MVVM中管理多个窗口

    我知道有几个与此类似的问题 但我还没有找到明确的答案 我正在尝试深入研究 MVVM 并尽可能保持纯粹 但不确定如何在坚持模式的同时启动 关闭窗口 我最初的想法是向 ViewModel 发送数据绑定命令 触发代码来启动一个新视图 然后通过 X
  • 电子邮件链接在 Android 上不起作用

    我有 HTML 格式的点击电子邮件链接的代码 它在我的电脑上运行良好 但在移动设备上不起作用 我只有 Android 所以我不知道问题是否仅在 Android 上或所有移动设备上 当我按下链接时 浏览器显示 网页无法显示 邮寄至 电子邮件受
  • 如何在asp.net mvc中创建弹出窗口?

    无需使用 javascript AJAX 单击超链接时 应该打开一个新的浏览器窗口 基本 HTML 锚元素 a href http www w3schools com target blank Visit W3Schools a ASP N
  • 如何将文本放在 RadioButton 的顶部

    我正在尝试实现附件中显示的效果 但没有成功 甚至有可能吗 我试图将文本框放在单选按钮内 并将其设置为水平和垂直内容对齐 但它没有按我想要的方式工作 欢迎任何建议 Resource
  • WPF DataGridTemplateColumn 组合框更新所有行

    我有这个 XAML 它从 ItemSource 是枚举的组合框中选择一个值 我使用的教程是 http www c sharpcorner com uploadfile dpatra combobox in datagrid in wpf h
  • 如何从WPF中的数据网格中获取单元格的值? [复制]

    这个问题在这里已经有答案了 可能的重复 从 DataGrid 中选择 DataGridCell https stackoverflow com questions 9978119 select datagridcell from datag
  • Jquery:将链接标记为已访问而不打开它们?

    我无意仅仅更改链接 我听说这是不可能的 但如果不是 我很想知道如何更改 如果需要的话 我可以将其添加到浏览器历史记录中 我想遍历所有 a 位于页面上并将其状态更改为已访问 例如 a each function mark as visited
  • 如何销毁或分离 CollectionView

    我观察到 WPF ItemsControls 的奇怪行为 如果将 ItemsSource 设置为实现INotifyCollectionChanged然后设置ItemsSource为空 则CollectionView创建它是为了向 Items

随机推荐