Sending email attachments via UWP EmailManager not working

坚强是说给别人听的谎言 提交于 2019-11-29 01:17:08

问题


Sending an attachment from a universal app with the following code is not working, why?

        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)

To, subject and body show fine in Outlook, but the attachment is missing: Outlook screenshot


回答1:


I believe it is because the Outlook is a Desktop app. As I understood, the EmailManager.ShowComposeNewEmailAsync uses mailto: protocal to launch mail client app and use share to provide the email content.

If you choose the mail store app when the select default app dialog launches, you will be able to see the attachment as following:

If you have previously chosen Desktop Outlook app as the default as for mailto protocol, you have to change the default app for the mailto: protocol association in control panel .

Previously, the ShowComposeNewEmailAsync only works for windows phone runtime app. And it is not up-to-date in the document, because it doesn't include the win 10 support.

On Windows 10 mobile, it works well without any problem. But on Windows Desktop, you have to choose a store app.




回答2:


This is still an issue in 2019, but I have found a workaround for my project. I simply assemble an *.msg file with recipients, subject, body, attachments etc. and save it to the apps local cache folder. It can then be launched using Launcher.LaunchFileAsync

As *.msg files are associated with outlook, it will most likely be the default app to open this kind of file. You can create such a file using MsgKit

I have prepared a demo project at: https://github.com/Moolt/UniversialWindowsPlatform.LaunchOutlook



来源:https://stackoverflow.com/questions/33053358/sending-email-attachments-via-uwp-emailmanager-not-working

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!