Как отправить электронное письмо из приложения WinRT/Windows Store?
Я разрабатываю приложение для Windows Store (Windows 8).
Мне нужно отправлять электронные письма на основе данных и адресов, хранящихся в данных приложения, и без необходимости вводить им данные или адрес.
Каким будет правильный/простой способ его реализации?
EitanB
Ответы
Ответ 1
Правильный способ - использовать общий доступ. Ваше приложение должно создать HTML-документ или текст и поделиться им. Пользователь будет выбирать "Почта" из Шаблона "Общий доступ", а HTML/Text станет телом письма.
Подробнее см. здесь...
http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh973055.aspx
Ответ 2
Вы можете попробовать с помощью
var mailto = new Uri("mailto:[email protected]&subject=The subject of an email&body=Hello from a Windows 8 Metro app.");
await Windows.System.Launcher.LaunchUriAsync(mailto);
Ответ 3
Это правильный синтаксис для использования для mailto: link (в отличие от других примеров выше с mailto: которые являются неправильными..)
var mailto = new Uri("mailto:[email protected]?subject=" + subject + "&body=" + body);
await Launcher.LaunchUriAsync(mailto);
Проблема с методом mailto: заключается в том, что у пользователя нет клиентской программы, связанной с mailto: ничего не произойдет.
Самый надежный способ использования - это веб-сервис или служба WCF. Использование Share Charm, считающееся "правильным" в Windows 8, не обязательно наилучшим образом, поскольку у пользователя все еще нет установленного почтового клиента, например, если они полагаются на gmail.com для своей электронной почты.
Ответ 4
Если вы разрабатываете приложение Windows Phone Universal WinRT, вы можете использовать пространство имен "Windows.ApplicationModel.Email.EmailMessage", поскольку пространство имен "Microsoft.Phone.Tasks.EmailComposeTask" не работает в приложении WinRT.
Затем этот код используется для создания и запуска нового письма.
// Create your new email message.
var em = new EmailMessage() ;
// Add as much EmailRecipient in it as you need using the following method.
em.To.Add(new EmailRecipient("[email protected]"));
em.Subject = "Your Subject...";
em.Body = "Your email body...";
// You can add an attachment that way.
//em.Attachments.Add(new EmailAttachment(...);
// Show the email composer.
await EmailManager.ShowComposeNewEmailAsync(em);
Я надеюсь, что он решит вашу проблему (или другие разработчики).
С уважением.
Ответ 5
Всегда можно подключиться к SMTP-серверу и выдавать команды, такие как HELO, MAIL, RCPT и т.д. Конечно, вам понадобится SMTP-сервер для подключения. Я использую это в нашей корпоративной интрасети для отправки писем.