Открыть новое письмо с несколькими вложениями в окне почтового клиента

Вопрос или проблема

Открыть новое письмо с несколькими вложениями в окне почтового клиента

Я разрабатываю приложение WinUI 3.

Я пытаюсь создать новое письмо с несколькими вложениями и открыть его в окне почтового клиента (новый Outlook).

Ранее мы не прикрепляли файлы к письму, поэтому использовали mailto, но я сомневаюсь, что могу использовать mailto для создания письма с вложениями.

Я видел несколько сообщений, в которых говорилось, что mailto не поддерживает вложения. Однако есть и сообщения, утверждающие, что это работает:

var uri = "mailto:[email protected]?subject=email&body=somebody&attachment=/files/audio/attachment.mp3";
Launcher.LaunchUriAsync(uri);  

Я попробовал это, но новое письмо открывается без каких-либо вложений.

Я также пытался составить сообщение электронной почты и открыть его с помощью менеджера электронной почты, вот так:

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

но ничего не происходит.

Итак, мои вопросы:

  1. Поддерживает ли mailto вложения?

  2. Как я могу создать письмо с вложениями и открыть его в почтовом клиенте?

PS: Я видел похожие вопросы на SO, но ни один из ответов не сработал для меня, поэтому прошу прощения за дубликат.

Ответ или решение

Вам необходимо создать новое письмо с несколькими вложениями и открыть его в почтовом клиенте Windows (например, Outlook). Давайте разберемся с вашими вопросами.

  1. Поддерживает ли mailto вложения?
    К сожалению, спецификация mailto не предусматривает возможность прикрепления файлов к электронным письмам. Поэтому использование mailto для создания письма с вложениями не сработает.

  2. Как создать письмо с вложениями и открыть его в почтовом клиенте?
    Для решения этой задачи вы можете использовать метод EmailManager.ShowComposeNewEmailAsync(), который позволяет создавать новое электронное письмо с помощью API почты Windows. Однако, нужно учитывать, что не все почтовые клиенты могут корректно обрабатывать вложения, переданные через API.

Вот пример кода, который показывает, как это сделать:

using System;
using System.Collections.Generic;
using Windows.ApplicationModel.Email;
using Windows.Storage;

// Создаем метод для создания нового письма
public async void ComposeEmailWithAttachments()
{
    var emailMessage = new EmailMessage();
    emailMessage.Subject = "Тема письма";
    emailMessage.Body = "Текст вашего сообщения";

    // Добавляем несколько вложений
    var attachments = new List<EmailAttachment>
    {
        new EmailAttachment("attachment1.txt", await StorageFile.GetFileFromPathAsync(@"C:\Path\To\File\attachment1.txt")),
        new EmailAttachment("attachment2.jpg", await StorageFile.GetFileFromPathAsync(@"C:\Path\To\File\attachment2.jpg")),
        // Добавьте больше вложений по необходимости
    };

    foreach (var attachment in attachments)
    {
        emailMessage.Attachments.Add(attachment);
    }

    // Показываем окно нового письма
    await EmailManager.ShowComposeNewEmailAsync(emailMessage);
}

Обратите внимание, что для работы с файлами вам потребуется указать правильные пути к ним. Убедитесь, что ваш WinUI 3 проект имеет доступ к необходимым файлам, иначе возникнут ошибки при попытке получения файла.

Заключение

Используйте метод EmailManager.ShowComposeNewEmailAsync() для создания нового письма с вложениями в почтовом клиенте. Если данное решение не работает, возможно, вы сталкиваетесь с ограничениями конкретного почтового клиента. Также убедитесь, что все пути к файлам указаны верно и файлы доступны для вашей программы.

Оцените материал
Добавить комментарий

Капча загружается...