UWP电子邮件通知

时间:2017-10-23 18:21:40

标签: c# email uwp visual-studio-2017

我正在尝试构建一个uwp应用,它会在成功创建帐户后通过电子邮件通知用户。这将全部连接到数据库等,但与此同时,我如何发送电子邮件?

有人可以告诉我一个发送电子邮件的基本方法。我现在可以在地址和消息中进行硬编码,我只需要知道它是如何工作的。我在网上找到的唯一的东西是如何在Windows 10中启动邮件应用程序。这不是我想要的。我希望能够通过代码自动向人们发送电子邮件。

非常感谢任何帮助。

由于

2 个答案:

答案 0 :(得分:1)

使用内置的UWP相关电子邮件API,您无法直接通过代码发送电子邮件。但您可以使用StreamSocket模拟SmtpClient并通过编程发送电子邮件。

我看到Sebastien Pertus已经在Windows 8.1应用程序中实现了这一点,但我已经在UWP中尝试了他的代码,它运行良好。您可以查看他的博客以供参考:Sending an email within a Windows 8.1 application : using StreamSocket to emulate a SmtpClient

答案 1 :(得分:0)

您可以打开邮件应用程序的撰写窗口(https://docs.microsoft.com/en-us/windows/uwp/contacts-and-calendar/sending-email

从该链接获取的示例:

private async Task ComposeEmail(Windows.ApplicationModel.Contacts.Contact recipient,
string subject, string messageBody)
{
    var emailMessage = new Windows.ApplicationModel.Email.EmailMessage();
    emailMessage.Body = messageBody;
    var email = recipient.Emails.FirstOrDefault<Windows.ApplicationModel.Contacts.ContactEmail>();
    if (email != null)
    {
        var emailRecipient = new Windows.ApplicationModel.Email.EmailRecipient(email.Address);
        emailMessage.To.Add(emailRecipient);
        emailMessage.Subject = subject;
    }

    await Windows.ApplicationModel.Email.EmailManager.ShowComposeNewEmailAsync(emailMessage);
}

如果您希望应用直接发送电子邮件,则需要连接到smtp服务器。请参阅此处https://stackoverflow.com/a/44184416/6409018了解如何执行此操作。

简而言之:您可以使用https://github.com/LightBuzz/SMTP-WinRT

中的nuget包
using (SmtpClient client = new SmtpClient("smtp.example.com", 465, false, "SenderEmail@example.com", "YourPassword"))
{
     EmailMessage emailMessage = new EmailMessage();

     emailMessage.To.Add(new EmailRecipient("someone1@anotherdomain.com"));
     emailMessage.CC.Add(new EmailRecipient("someone2@anotherdomain.com"));
     emailMessage.Bcc.Add(new EmailRecipient("someone3@anotherdomain.com"));
     emailMessage.Subject = "Subject line of your message";
     emailMessage.Body = "This is an email sent from a UWP app!";

     await client.SendMailAsync(emailMessage);
}