zoukankan      html  css  js  c++  java
  • 2018-8-10-win10-UWP-发邮件

    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

  • 相关阅读:
    Syncfusion Essential DocIO操作word文件实用函数
    用Ubuntu破解wep无线加密
    Wubi 安装的 Ubuntu 在引导时进入grub,无法进入系统的解决办法
    Ubuntu 下挂ISO到虚拟光驱的方法
    令人失望的联通3G
    个性的国度
    也谈人脸识别
    红日
    在应用程序里识别UserAgent对应的浏览器
    缘起
  • 原文地址:https://www.cnblogs.com/lindexi/p/12085582.html
Copyright © 2011-2022 走看看