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

Как открыть новое письмо с приложением в приложении Windows 10 Mail

Я пытаюсь добавить функцию в свое приложение С#/.Net, чтобы пользователь мог отправить файл по электронной почте. Когда у пользователя установлен Outlook, я могу успешно использовать API-интерфейсы взаимодействия Outlook, чтобы делать именно то, что я хочу. Однако при установке новой Windows 10 я не могу решить, как открыть электронное письмо с приложением в приложении Mail по умолчанию, которое находится в хранилище Windows.

Я пробовал:

  • Использование файлов EML в соответствии с qaru.site/info/221574/...

    • Приложение Mail не регистрируется для открытия файлов EML.
  • Использование MAPI32.dll и т.д. (я использовал код из https://github.com/metageek-llc/inSSIDer-2/blob/master/MetaScanner/UnhandledException/MapiMailMessage.cs)

    • Появится диалоговое окно, в котором говорится, что программа электронной почты не зарегистрирована. Кажется, почтовое приложение не взаимодействует с MAPI
  • Использование mailto: links.

    • Открывается почтовая программа, но она не учитывает Attachment = или Attach = parameters

Кроме

  • Windows.ApplicationModel.Email.EmailMessage, по-видимому, доступна только на телефонах.

  • Я не хочу использовать SMTP для отправки сервера сообщений.

  • Я также пробовал программы MS-UNISTORE_EMAIL: и OUTLOOKMAIL: url, которые связаны с приложением Mail, они, похоже, ведут себя так же, как mailto:

  • Кажется, что нет никакого способа запустить приложение Mail из командной строки

4b9b3361

Ответ 1

Пожалуйста, попробуйте следующий пример

 private async void SendEmailButton_Click(object sender, RoutedEventArgs e)
        {
            EmailMessage emailMessage = new EmailMessage();
            emailMessage.To.Add(new EmailRecipient("***@***.com"));
            string messageBody = "Hello World";
            emailMessage.Body = messageBody;
            StorageFolder MyFolder = Windows.ApplicationModel.Package.Current.InstalledLocation;
            StorageFile attachmentFile =await MyFolder.GetFileAsync("MyTestFile.txt");
            if (attachmentFile != null)
            {
                var stream = Windows.Storage.Streams.RandomAccessStreamReference.CreateFromFile(attachmentFile);
                var attachment = new Windows.ApplicationModel.Email.EmailAttachment(
                         attachmentFile.Name,
                         stream);
                emailMessage.Attachments.Add(attachment);
            }
            await EmailManager.ShowComposeNewEmailAsync(emailMessage);           
        }

Часть ShowComposeNewEmailAsny(...) - волшебная часть.