通过 UWP EmailManager 发送电子邮件附件不起作用
Sending email attachments via UWP EmailManager not working
使用以下代码从通用应用程序发送附件不起作用,为什么?
Dim emailMessage As New EmailMessage()
emailMessage.[To].Add(New EmailRecipient("a@b.com"))
emailMessage.Subject = "Test"
emailMessage.Body = "Hello World"
Dim localAppFolder = Windows.Storage.ApplicationData.Current.LocalFolder
Dim file = Await localAppFolder.CreateFileAsync("SomeFile.txt", Windows.Storage.CreationCollisionOption.ReplaceExisting)
Await Windows.Storage.FileIO.WriteTextAsync(file, "aaaa")
Dim fileRef = RandomAccessStreamReference.CreateFromFile(file)
emailMessage.Attachments.Add(New EmailAttachment(file.Name, fileRef))
Await EmailManager.ShowComposeNewEmailAsync(emailMessage)
收件人、主题和正文在 Outlook 中显示正常,但附件丢失:Outlook screenshot
我认为这是因为 Outlook 是一个桌面应用程序。据我了解,EmailManager.ShowComposeNewEmailAsync
使用 mailto: 协议来启动邮件客户端应用程序并使用共享来提供电子邮件内容。
如果您在 select 默认应用程序对话框启动时选择邮件商店应用程序,您将能够看到如下附件:
如果您之前选择桌面 Outlook 应用程序作为 mailto 协议的默认应用程序,则必须在控制面板中更改 mailto: 协议关联的默认应用程序。
以前,ShowComposeNewEmailAsync 仅适用于 windows phone 运行时应用程序。而且它在文档中不是最新的,因为它不包括 win 10 支持。
在Windows 10 手机上,它运行良好,没有任何问题。但是在 Windows 桌面上,您必须选择一个商店应用程序。
这在 2019 年仍然是一个问题,但我已经为我的项目找到了解决方法。
我只是 assemble 一个包含收件人、主题、正文、附件等的 *.msg 文件,并将其保存到应用程序的本地缓存文件夹中。然后可以使用 Launcher.LaunchFileAsync
启动它
由于 *.msg 文件与 outlook 相关联,因此很可能是打开此类文件的默认应用程序。您可以使用 MsgKit
创建这样的文件
我准备了一个演示项目:https://github.com/Moolt/UniversialWindowsPlatform.LaunchOutlook
使用以下代码从通用应用程序发送附件不起作用,为什么?
Dim emailMessage As New EmailMessage()
emailMessage.[To].Add(New EmailRecipient("a@b.com"))
emailMessage.Subject = "Test"
emailMessage.Body = "Hello World"
Dim localAppFolder = Windows.Storage.ApplicationData.Current.LocalFolder
Dim file = Await localAppFolder.CreateFileAsync("SomeFile.txt", Windows.Storage.CreationCollisionOption.ReplaceExisting)
Await Windows.Storage.FileIO.WriteTextAsync(file, "aaaa")
Dim fileRef = RandomAccessStreamReference.CreateFromFile(file)
emailMessage.Attachments.Add(New EmailAttachment(file.Name, fileRef))
Await EmailManager.ShowComposeNewEmailAsync(emailMessage)
收件人、主题和正文在 Outlook 中显示正常,但附件丢失:Outlook screenshot
我认为这是因为 Outlook 是一个桌面应用程序。据我了解,EmailManager.ShowComposeNewEmailAsync
使用 mailto: 协议来启动邮件客户端应用程序并使用共享来提供电子邮件内容。
如果您在 select 默认应用程序对话框启动时选择邮件商店应用程序,您将能够看到如下附件:
如果您之前选择桌面 Outlook 应用程序作为 mailto 协议的默认应用程序,则必须在控制面板中更改 mailto: 协议关联的默认应用程序。
以前,ShowComposeNewEmailAsync 仅适用于 windows phone 运行时应用程序。而且它在文档中不是最新的,因为它不包括 win 10 支持。
在Windows 10 手机上,它运行良好,没有任何问题。但是在 Windows 桌面上,您必须选择一个商店应用程序。
这在 2019 年仍然是一个问题,但我已经为我的项目找到了解决方法。 我只是 assemble 一个包含收件人、主题、正文、附件等的 *.msg 文件,并将其保存到应用程序的本地缓存文件夹中。然后可以使用 Launcher.LaunchFileAsync
启动它由于 *.msg 文件与 outlook 相关联,因此很可能是打开此类文件的默认应用程序。您可以使用 MsgKit
创建这样的文件我准备了一个演示项目:https://github.com/Moolt/UniversialWindowsPlatform.LaunchOutlook