在我们构建App的时候,一个很人性化的设计就是增加邮件反馈渠道,就是让用户直接发邮件给你反馈。
当然,你也可以用系统自带的“反馈中心”(超级无敌难用,还经常打不开),或者使用商店的评价系统。
但是这些远不及邮件效率高效及时!!!
所以今天来记录一下怎么样在UWP里面发邮件。很简单,有两个办法:
① 不带附件的发送
这个最简单了,主要两句话
public async static Task FeedbackAsync(string address, string subject, string body) { if (address == null) return; var mailto = new Uri($"mailto:{address}?subject={subject}&body={body}"); await Launcher.LaunchUriAsync(mailto); }
意思就不解释了吧,用法也不解释了。
是吧!只不过缺点就是不能发送附件,这是我知道的啊。当然可能我是菜鸟,如果你知道怎么发送,请留言,谢谢。
还一个缺点就是你想在body邮件主体里面预先加一些文字的话," "换行等各种换行都不能用,体验不好。但是用户在点击【发送按钮之前,他们是可以编辑且换行的,但是你不能】
② 带附件的发送【推荐】
这个呢,有点麻烦,不是逻辑麻烦,而是代码比上面的多了几行,哈哈
先不BB那么多,直接看code
public async static Task ComposeEmail(string address, string subject, string messageBody, StorageFile attachmentFile) { var emailMessage = new Windows.ApplicationModel.Email.EmailMessage(); emailMessage.Body = messageBody; emailMessage.Subject = subjectif (attachmentFile != null) { var stream = Windows.Storage.Streams.RandomAccessStreamReference.CreateFromFile(attachmentFile); var attachment = new Windows.ApplicationModel.Email.EmailAttachment(attachmentFile.Name, stream); emailMessage.Attachments.Add(attachment); } var emailRecipient = new Windows.ApplicationModel.Email.EmailRecipient(address); emailMessage.To.Add(emailRecipient); await Windows.ApplicationModel.Email.EmailManager.ShowComposeNewEmailAsync(emailMessage); }
看,可以发附件,一定不要忘记最后一句
await Windows.ApplicationModel.Email.EmailManager.ShowComposeNewEmailAsync(emailMessage);
这个呢,就克服了上面第一种的缺点,可以在messageBody预置文字里面 了
详见MSDN https://docs.microsoft.com/zh-cn/windows/uwp/contacts-and-calendar/sending-email
这个也有缺点,只能等微软修复了。 messageBody不支持中文,哈哈哈哈哈哈哈
但是用户在点击【发送按钮之前,他们是可以编辑中文的,但是你不能】
我用这个主要是在用户发送附件(软件日志)的同时,body上附加了系统的一些信息。
好像没有第三种方法了
具体怎么取舍看你咯