UWP 邮件反馈

时间:2023-03-08 23:38:03
UWP 邮件反馈

在我们构建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"换行等各种换行都不能用,体验不好。但是用户在点击【发送按钮之前,他们是可以编辑且换行的,但是你不能】

UWP 邮件反馈

② 带附件的发送【推荐】

这个呢,有点麻烦,不是逻辑麻烦,而是代码比上面的多了几行,哈哈

先不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上附加了系统的一些信息。

UWP 邮件反馈

好像没有第三种方法了

具体怎么取舍看你咯