在我們建構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
本文版權歸作者和部落格園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。