zoukankan      html  css  js  c++  java
  • 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

    知识共享许可协议
    本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系

  • 相关阅读:
    6-Python爬虫-分布式爬虫/Redis
    ES 查询时 排序报错(fielddata is disabled on text fileds by default ... )解决方法
    Intellij Idea webstorm 激活
    Intellij Idea 配置jdk
    java 获取(格式化)日期格式
    js 跳转 XSS漏洞 预防
    CSS去掉背景颜色
    js对象无法当成参数传递 解决方法
    Elasticsearch java api
    java多条件查询SQL语句拼接的小技巧
  • 原文地址:https://www.cnblogs.com/lindexi/p/12087437.html
Copyright © 2011-2022 走看看