如何拍照并通过电子邮件发送?

时间:2011-02-03 17:16:15

标签: c# email windows-phone-7

我希望用户拍照,然后打开附有照片的电子邮件对话框。到目前为止我得到了这个:

private void btnSubmitPhoto_Click(object sender, EventArgs e) 
{ 
    CameraCaptureTask cameraCaptureTask = new CameraCaptureTask(); 
    cameraCaptureTask.Completed += cameraCaptureTask_Completed; 
    cameraCaptureTask.Show(); 
} 

private void cameraCaptureTask_Completed(object sender, PhotoResult e) 
{ 
    if (e.TaskResult == TaskResult.OK) 
    { 
        currentImage = new BitmapImage(); 
        currentImage.SetSource(e.ChosenPhoto); 

        EmailComposeTask ect = new EmailComposeTask();     
    }             
}    

我没有看到如何在EmailComposeTask中添加附件。我错过了什么吗?

2 个答案:

答案 0 :(得分:8)

目前的框架工具无法使用EmailComposeTask向电子邮件添加附件。如果您需要此功能,则必须使用Web服务手动处理自己发送的电子邮件。

答案 1 :(得分:2)

除了无法发送附件外,您使用CameraCaptureTask的方式也存在问题。

由于此任务是一个选择器,因此您必须对其进行编码以便对其进行编码。

实际上,这意味着您的CameraCaptureTask实例必须在类级别,并且在页面构造函数中也应该订阅已完成的事件处理程序。

如果你不这样做,那么页面将不知道如何处理任务返回时返回的信息。

您的代码需要看起来像这样:

public partial class MainPage : PhoneApplicationPage
{
    CameraCaptureTask cct = new CameraCaptureTask();

    public MainPage()
    {
        InitializeComponent();

        // Any other initialization tasks

        cct.Completed += new EventHandler<PhotoResult>(cct_Completed);
    }

    void cct_Completed(object sender, PhotoResult e)
    {
        // Do something with `e`
    }

    // Or some other appropriate event
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        cct.Show();
    }

请注意。所有选择器都是如此,但不是发射器。

<强>更新
造成这种情况的原因是在应用程序被逻辑删除以打开选择器之后页面被“重新水化”的方式。

从显示选择器返回时,将创建页面的新实例。因此,这将不包括在先前实例中订阅的事件处理程序的任何记录。如果没有附加到已完成的处理程序的任何内容,则不会调用处理选择器返回的详细信息的代码。