Как поделиться файлом на определенный адрес электронной почты

Я разрабатываю приложение для магазина Windows, используя WinRT C++. Я могу поделиться файлом по электронной почте, но он не может указать адрес электронной почты получателя. Ниже приведена часть моего кода для совместного использования файла:-

DataRequest^ request = e->Request;
request->Data->Properties->Title = "Testing";
request->Data->Properties->Description = "Email With Attachment";

DataRequestDeferral^ deferral = request->GetDeferral();
create_task(Windows::ApplicationModel::Package::Current->InstalledLocation->GetFileAsync("testing.pdf")).then([this, request, deferral](task<StorageFile^> getFileTask)
{
    try
    {
        auto pdfFile = getFileTask.get();
        auto storageItems = ref new Platform::Collections::Vector<IStorageItem^>();
        storageItems->Append(pdfFile);
        request->Data->SetStorageItems(storageItems);
        deferral->Complete();
    }
    catch (Exception^ ex)
    {
        // Calling FailWithDisplayText() also calls Complete on the deferral.
        request->FailWithDisplayText(ex->Message);
    }
});

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

2 ответа

Нет способа сделать это в Windows 8; Вы можете поделиться файлом (как в коде выше) или отправить электронное письмо на явный адрес (используя LaunchUriAsync с mailto: URI), но вы не можете сделать оба.

Обратите внимание, что приложения Share Target могут запрашивать у системы запоминание недавних / частых целей, поэтому, если пользователь недавно отправил электронное письмо по адресу bob@foo.com, это может появиться в качестве прямого параметра в средстве выбора ресурса. Встроенное почтовое приложение использует эту функцию.

Другой вариант с низким разрешением - скопировать адрес электронной почты в буфер обмена и попросить пользователя просто вставить его при запуске приложения электронной почты (или скопировать файл в буфер обмена и использовать mailto: подход).

Похоже, все, что вы хотите сделать, это создать новое сообщение электронной почты с конкретным получателем. Самый простой способ сделать это - использовать API EmailManager.ShowComposeNewEmailAsync. Я бы порекомендовал также оставить общий доступ в качестве опции на тот случай, если ваши пользователи захотят отправлять контент через Facebook или Twitter.

Другие вопросы по тегам