Подтвердить что ты не робот

Как отправить электронное письмо из приложения WinRT/Windows Store?

Я разрабатываю приложение для Windows Store (Windows 8).

Мне нужно отправлять электронные письма на основе данных и адресов, хранящихся в данных приложения, и без необходимости вводить им данные или адрес.

Каким будет правильный/простой способ его реализации?

EitanB

4b9b3361

Ответ 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-сервер для подключения. Я использую это в нашей корпоративной интрасети для отправки писем.