【问题标题】:Opening default email when clicking on UWP email hyperlink单击 UWP 电子邮件超链接时打开默认电子邮件
【发布时间】:2017-12-25 08:33:23
【问题描述】:

我正在尝试学习 UWP/XAML,并尝试在单击电子邮件链接时打开默认电子邮件客户端。这是我所拥有的

                <TextBlock FontSize="36"     Foreground="Navy">
                    <LineBreak/>
                    <Run Foreground="Navy" FontFamily="Segoe UI Light" FontSize="36">
                        Contact This Person
                    </Run>
                    <LineBreak/>
                    <LineBreak/>
                    <Run Foreground="Navy" FontFamily="Segoe UI Light" FontSize="30">
                        Bob Smith
                    </Run>
                    <LineBreak/>
                    <Run Foreground="Navy" FontFamily="Segoe UI Light" FontSize="30">
                        123 Fake Street
                    </Run>
                    <LineBreak/>
                    <Run Foreground="Navy" FontFamily="Segoe UI Light" FontSize="30">
                        FooBar, Foo
                    </Run>
                    <LineBreak/>

                    <Run Foreground="Navy" FontFamily="Segoe UI Light" FontSize="30">
                       5551212
                    </Run>
                    <LineBreak/>

                    <Hyperlink  NavigateUri="mailto:test@blahblah.com" >Email Bob</Hyperlink>

                </TextBlock>

            </StackPanel>
        </Border>

当我点击电子邮件链接时,我会弹出一个窗口,询问我是否要切换到 Chrome。我是否需要 .cs 代码,或者这一切都可以在 XAML 中处理吗?

【问题讨论】:

    标签: c# xaml uwp uwp-xaml


    【解决方案1】:

    默认情况下,MAILTO: 协议不与邮件客户端关联。

    客户端可以通过在您提到的对话框中选择应用程序来将应用程序与协议相关联。这样做将在HKEY_CURRENT_USER\Software\Microsoft\Windows\Shell\Associations\URLAssociations\‌​MAILTO\UserChoice 创建注册表项以存储 URL 关联。需要在这些键中设置的值取决于您是 Windows 8 之前还是更高版本的 explained here

    总而言之,您看到该对话框是因为您没有设置默认邮件客户端来处理使用 mailto: 协议的 url。

    【讨论】:

      【解决方案2】:

      我必须为 Click 事件添加一个处理程序,然后在代码隐藏中使用 Launcher 类。

      XAML:

      <Hyperlink Click="ContactHyperlink_Click">
          example@example.com
      </Hyperlink>
      

      代码隐藏:

      private async void ContactHyperlink_Click(Hyperlink sender, Microsoft.UI.Xaml.Documents.HyperlinkClickEventArgs args)
      {
          await Windows.System.Launcher.LaunchUriAsync(new Uri("mailto:example@example.com?subject=Message from My App"));
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-22
        • 2014-05-20
        • 1970-01-01
        • 2011-07-17
        • 2018-03-11
        • 1970-01-01
        相关资源
        最近更新 更多