我正在使用winRT C ++开发一个Windows应用商店应用。我可以通过电子邮件共享文件,但不能指定收件人电子邮件地址。 Bellow是我共享文件的代码的一部分: -
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);
}
});
如何在不手动填写电子邮件地址的情况下将附件文件发送到特定的电子邮件地址。
答案 0 :(得分:2)
在Windows 8中无法做到这一点;您可以共享文件(如上面的代码中所示),也可以将电子邮件发送到显式地址(使用带有LaunchUriAsync
URI的mailto:
),但不能同时执行这两项操作。
请注意,共享目标应用可以ask the system to remember recent / frequent targets,因此如果用户最近通过电子邮件发送 bob@foo.com ,则可能会在共享选择器中显示为直接选项。内置邮件应用程序使用此功能。
另一个低保险选项是copy the e-mail address to the clipboard并要求用户在电子邮件应用启动时将其粘贴(或将文件复制到剪贴板并使用mailto:
方法)。
答案 1 :(得分:0)
听起来您想要做的就是创建一个包含特定收件人的新电子邮件。最简单的方法是使用EmailManager.ShowComposeNewEmailAsync API。如果您的用户想要使用Facebook或Twitter发送内容,我建议还保持共享作为一种选择。