Как поделиться файлом на определенный адрес электронной почты
Я разрабатываю приложение для магазина 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.