title author date CreateTime categories
win10 UWP 发邮件
lindexi
2018-08-10 19:17:19 +0800
2018-2-13 17:23:3 +0800
Win10 UWP

UWP 下如何发邮件?可以使用mailto:xx?subject=*方式发送?
本文:如何在 UWP 使用默认邮件发邮件。

打开设置,应用,默认应用,选择应用 OutLook。这样就和我的一样,如果出错了,那么是邮件不支持。

首先需要找联系人,联系人可以在用户联系找。

            //找到一个联系人
//如果是需要用户选发送到哪个联系人,使用下面方法
var contactPicker = new ContactPicker();
contactPicker.SelectionMode = ContactSelectionMode.Fields;//选择联系人一个项
contactPicker.DesiredFieldsWithContactFieldType.Add(ContactFieldType.Email);//选择email
Contact contact = await contactPicker.PickContactAsync();

让用户选择有email的联系,不选择一个联系全部。这句话说的是,在用户选择联系人之后,让他选择联系人的一个项。

选择联系人,选择一个邮箱

如果指定一个联系人让用户发送,如开发者,可以直接写自己的邮箱

            contact = new Contact()
{
Emails =
{
new ContactEmail()
{
Address = "lindexi_gd@163.com",
Description = "UWP 开发者",
}
}
};

然后需要填写主题,内容。可以添加附件,注意附件添加是 StorageFile 。

可以看到,需要写的代码很多,我需要
写一个类来发送,首先使用Windows.ApplicationModel.Email

    using Windows.ApplicationModel.Contacts;
using Windows.ApplicationModel.Email;

需要主题和内容

            var emailMessage = new EmailMessage();

            emailMessage.Subject = subject;
emailMessage.Body = messageBody;

如果需要使用附件,
如何读取 StorageFile ?

            if (attachmentFile != null)
{
var stream = RandomAccessStreamReference.CreateFromFile(attachmentFile); var attachment = new EmailAttachment(
attachmentFile.Name,
stream); emailMessage.Attachments.Add(attachment);
}

然后添加收件人

            var email = recipient.Emails.FirstOrDefault<ContactEmail>();
if (email != null)
{
var emailRecipient = new EmailRecipient(email.Address);
emailMessage.To.Add(emailRecipient);
}

假如发给多个人,使用 emailMessage.To.Add list

发邮件很简单,await EmailManager.ShowComposeNewEmailAsync(emailMessage);就可以让用户发邮件

如果默认不是wr的,那么发送邮件可以出错,不是所有的软件都支持,于是可以使用另一个方式:

mailto:{email}?subject={subject}&body={messageBody}

如果遇到messageBody有换行可以看到这个方法没有换行。

UWP 发送邮件内容如何换行,messageBody 用的是 html ,所以使用 Uri.EscapeDataString

我写了一个函数,多谢 李继龙 大神,可以传入 email 主题 内容就可以发送

        private async Task UniversallyEmail(string email, string subject, string messageBody)
{
messageBody = Uri.EscapeDataString(messageBody); 用于换行
string url = $"mailto:{email}?subject={subject}&body={messageBody}";
await Launcher.LaunchUriAsync(new Uri(url));
}

代码:http://download.csdn.net/detail/lindexi_gd/9757862

参见:https://docs.microsoft.com/en-us/windows/uwp/contacts-and-calendar/sending-email

2018-8-10-win10-UWP-发邮件的更多相关文章

  1. win10 UWP 发邮件

    UWP 下如何发邮件?可以使用mailto:xx?subject=*方式发送? 本文:如何在 UWP 使用默认邮件发邮件. 打开设置,应用,默认应用,选择应用 OutLook.这样就和我的一样,如果出 ...

  2. win10 uwp 使用 Microsoft.Graph 发送邮件

    在 2018 年 10 月 13 号参加了 张队长 的 Office 365 训练营 学习如何开发 Office 365 插件和 OAuth 2.0 开发,于是我就使用 UWP 尝试使用 Micros ...

  3. #题目:有10 台被监控主机、一台监控机,在监控机上编写脚本,一旦某台被监控机器/ 分区适用率大于80%, 就发邮件报警放到crontab 里面, 每10 分钟检查一次

    #题目:有10 台被监控主机.一台监控机,在监控机上编写脚本,一旦某台被监控机器/ 分区适用率大于80%, 就发邮件报警放到crontab 里面, 每10 分钟检查一次 #测试机器:虚拟机Linux ...

  4. 带着新人学springboot的应用10(springboot+定时任务+发邮件)

    接上一节,环境一样,这次来说另外两个任务,一个是定时任务,一个是发邮件. 1.定时任务 定时任务可以设置精确到秒的准确时间去自动执行方法. 我要一个程序每一秒钟说一句:java小新人最帅 于是,我就写 ...

  5. win10 uwp 手把手教你使用 asp dotnet core 做 cs 程序

    本文是一个非常简单的博客,让大家知道如何使用 asp dot net core 做后台,使用 UWP 或 WPF 等做前台. 本文因为没有什么业务,也不想做管理系统,所以看到起来是很简单. Visua ...

  6. Win10/UWP开发—使用Cortana语音与App后台Service交互

    上篇文章中我们介绍了使用Cortana调用前台App,不熟悉的移步到:Win10/UWP开发—使用Cortana语音指令与App的前台交互,这篇我们讲讲如何使用Cortana调用App的后台任务,相比 ...

  7. Win10 UWP应用发布流程

    简介 Win10 UWP应用作为和Win8.1 UAP应用不同的一种新应用形式,其上传至Windows应用商店的流程也有了一些改变. 这篇博文记录了我们发布一款Win10 UWP应用的基本流程,希望为 ...

  8. win10 uwp MVVM入门

    MVVM 是一个强大的架构,基本从 WPF 开始,wr(我说的就是微软)就提倡使用 MVVM.它可以将界面和后台分离,让开发人员可以不关心界面是怎样,全心投入到后台代码编写中. 然后在编写完后台代码后 ...

  9. 【广告】win10 uwp 水印图床 含代码

    本文主要是广告我的软件. 图床可以加速大家写博客上传图片的时间,通过简化我们的操作来得到加速. 在写博客的时候,我们发现,我们需要上传一张图片,需要先打开图片,然后选择本地图片,然后上传. 但是我经常 ...

  10. win10 uwp 商业游戏

    本文告诉大家去做一个商业游戏,游戏很简单,几乎没有什么技术 游戏的开始,需要添加框架库,于是引用我自己写的库. 首先是创建一个启动页面,这个页面是显示启动的. 在显示启动的时候,是需要加载游戏需要使用 ...

随机推荐

  1. php session之多级目录存储

    当选择以文件形式保存session到服务器时,需要制定保存路径.用到php.ini中的session.save_path,其有三种配置写法: session.save_path = "N;/ ...

  2. python高级:垃圾回收机制

    ---恢复内容开始--- 垃圾回收机制 1.计数引用机制 就是一个变量.数据结构.对象当没有人引用时,python的会启用垃圾回收机制,将其从内存中删除. 怎么看引用的次数呢?sys模块提供的sys. ...

  3. 031:verbatim 标签

    verbatim 标签: verbatim 标签:默认在 DTL 模板中是会去解析那些特殊字符的.比如 {% 和 %} 以及 {{ 等.如果你在某个代码片段中不想使用 DTL 的解析引擎.那么你可以把 ...

  4. 数据库(一):事务的特性与事务(在同一个 JVM 中)的传递

    参考文章 https://blog.csdn.net/shuaihj/article/details/14163713 https://blog.csdn.net/shfqbluestone/arti ...

  5. 29 基于PCL的点云平面分割拟合算法技术路线(针对有噪声的点云数据)

    0 引言 最近项目中用到了基于PCL开发的基于平面的点云和CAD模型的配准算法,点云平面提取采用的算法如下. 1 基于PCL的点云平面分割拟合算法 2 参数及其意义介绍 (1)点云下采样 1. 参数: ...

  6. InputStream类的available()方法

    InputStream类的available()方法 这个方法可以在读写操作前先得知数据流里有多少个字节可以读取需要注意的是,如果这个方法用在从本地文件读取数据时,一般不会遇到问题,但如果是用于网络操 ...

  7. NOIP2011 洛谷P1315 观光公交

    题目传送门 先解释一下数组的意义: d[i]表示公交车从第i个点到第i+1个点需要的时间 pas结构体中:t表示这个乘客到公交站牌的时间,u表示起点,v表示终点 wait[i]表示公交车在第i个站点等 ...

  8. CycleGAN --- Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks

    文章地址:http://openaccess.thecvf.com/content_ICCV_2017/papers/Zhu_Unpaired_Image-To-Image_Translation_I ...

  9. java 集合框架 List相关接口

    AbstractCollection 此类提供 Collection 接口的骨干实现,以最大限度地减少了实现此接口所需的工作. 还有两个抽象方法,具体的迭代器,具体的Collection 的大小 pu ...

  10. 在windows上使用xdmcp登陆centos,红帽linux

    使用xdmcp协议可以方便的在远端登陆linux服务器,进行一些界面的操作. 修改服务器端配置. vi /etc/gdm/custom.conf 找到下面两个标签 [security] AllowRe ...