2011-02-03 28 views
2

私は、写真を撮ってから写真を添付し​​た電子メールダイアログを開くことを望みます。これまで私はこれを持っていました:写真を撮って電子メールで送る方法は?

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に添付ファイルを追加する方法はありません。何か不足していますか?

答えて

8

EmailComposeTaskを使用して、現在のフレームワークツールで電子メールに添付ファイルを追加することはできません。この機能が必要な場合は、Webサービスを使用して電子メールを手動で処理する必要があります。

2

添付ファイルを送信できないことに加えて、CameraCaptureTaskの使用方法に問題があります。

このタスクはチューザであるため、トゥンブルソングを考慮する必要があります。

実際には、CameraCaptureTaskのyoourインスタンスはクラスレベルでなければならず、完成したイベントハンドラもページコンストラクタに登録する必要があります。

これをしないと、ページは、タスクが返されたときに返される情報の処理方法を認識しません。

あなたのコードは次のようなものを探す必要があります:

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(); 
    } 

は注意してください。これは、すべてのチューザのケースですが、ランチャではありません。

更新:
その理由は、アプリケーションがチューを開くために廃棄された後、ページが「再水和し」されている方法によるものです。

チューザの表示から戻ると、ページの新しいインスタンスが作成されます。したがって、前のインスタンスで購読したイベントハンドラのレコードは含まれません。完了したハンドラに何も付いていなければ、セレクタによって返された詳細を処理するコードは呼び出されません。

+0

キャッチをありがとう。私はこれを知らなかった。イベントをコンストラクタに登録する必要がある理由を拡張できますか? – AngryHacker

+0

@AngryHackerの質問が更新され、コンストラクタでイベントに登録する必要がある理由を説明しています –

関連する問題