在我们构建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邮件主体里面预先加一些文字的话,"\r\n"换行等各种换行都不能用,体验不好。但是用户在点击【发送按钮之前,他们是可以编辑且换行的,但是你不能】

② 带附件的发送【推荐】
这个呢,有点麻烦,不是逻辑麻烦,而是代码比上面的多了几行,哈哈
先不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预置文字里面\r\n了
详见MSDN https://docs.microsoft.com/zh-cn/windows/uwp/contacts-and-calendar/sending-email
这个也有缺点,只能等微软修复了。 messageBody不支持中文,哈哈哈哈哈哈哈
但是用户在点击【发送按钮之前,他们是可以编辑中文的,但是你不能】
我用这个主要是在用户发送附件(软件日志)的同时,body上附加了系统的一些信息。
好像没有第三种方法了
具体怎么取舍看你咯
作者:猫叔Vincent
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。