none
メールの添付ファイル(中は文字)を取り込みたい。 RRS feed

  • 質問

  • VS2013 + C# を使って Windows8.1ストアアプリを開発しています。

    メール内の添付ファイルを選択した状態で、共有を開くとアプリのアイコンが表示して、

    そのアイコンを選択すると、アプリが起動して、添付ファイルの内容を表示するようにしたいです。

    現在

    マニュフェストに共有ターゲット/StorageItemsを追加して 

    App.xaml.csのOnShareTargetActivatedでファイルを読むようにしてます。

    メールの添付ファイルを選択した状態で共有を選ぶと、アプリのアイコンが選択できるようになってます。

    アプリを選択すると肝心のDataReaderから

    ReadBuffersや ReadStringを行うとExceptionが発生します。

    メールの添付ファイルを読む良い方法はありませんか ?

    よろしくお願いします。

    以下にDataReaderからデータを読んでいる箇所を載せます。

    -----OnShareTargetActivated -----------------------------------------------------------------------------------------------------

    var files = await this._shareOperation.Data.GetStorageItemsAsync();

    var file = files[0] as StorageFile;

    var stream = await file.OpenReadAsync();
    var size = stream.Size;
    byte[] readBytes = new byte[size + 256];
    using (var inputStream = stream.GetInputStreamAt(0))
    {
      DataReader dataReader = new DataReader(inputStream);
      uint numBytesLoaded = await dataReader.LoadAsync((uint)size);
      dataReader.ReadBytes(readBytes);      // ここで落ちる
      xmlstring = dataReader.ReadString(numBytesLoaded);  // ここでも落ちる
       dataReader.DetachStream();
    }

    ReadStirngを使った場合では

     System.ArgumentOutOfRangeException。Unicode 文字のマッピングがターゲットのマルチバイト コード ページにありません。

    ReadByteでは

      有効な範囲外のデータにアクセスしようとしました

    とでます。

    2014年1月29日 1:12

回答

  • AppKeyさん

    こんにちは

    メールの添付ファイルの中身(テキスト)はAppkeyさんが管理できるシステムから飛んでくるものでしょうか?

    仮にそうだとしたらファイルの関連付けでアプリ起動するという手もあると思います。

    ■メール送信側

     添付ファイルの拡張子をストアアプリで設定した拡張子(.mydomaindat みたいな)として作成し、添付。

    ■メール受信側(ストアアプリ)

     指定した拡張子で起動するようにマニフェストを設定

    そしたらファイルが取得できるので中身も確認できるのでは?

    思ったことを書いてみました。

    (※そもそも管理できるシステムだったら、そこにWeb API立てればいいじゃんって話もありますが・・・)

    • 編集済み やまよしぃ 2014年1月29日 7:54
    • 回答としてマーク AppKey 2014年1月29日 8:28
    2014年1月29日 7:51

すべての返信

  • 添付ファイルに使用されている文字エンコーディングは確認されていますでしょうか? 本文以外のエンコーディング処理はアプリケーション側の責任です。(たぶん)
    2014年1月29日 1:20
  • 早くの回答ありがとうございます。

    添付ファイルはもともとこのアプリで作成したもので、

    アプリローカルでは Read/Writeしているので中身には問題ないと思っています。 

    エンコーディングは UTF8 です。

    2014年1月29日 1:40
  • LiveMailの添付ファイルを選択した状態で、共有を行うと、

    どうも、添付ファイルのサムネイル画像がデータとして来ているようでした。  

     

    メールの添付ファイル中の文字列を読み込みたいのですが

    良い方法がありますでしょうか ?

     

    よろしくお願いします。

    2014年1月29日 2:47
  • AppKeyさん

    こんにちは

    メールの添付ファイルの中身(テキスト)はAppkeyさんが管理できるシステムから飛んでくるものでしょうか?

    仮にそうだとしたらファイルの関連付けでアプリ起動するという手もあると思います。

    ■メール送信側

     添付ファイルの拡張子をストアアプリで設定した拡張子(.mydomaindat みたいな)として作成し、添付。

    ■メール受信側(ストアアプリ)

     指定した拡張子で起動するようにマニフェストを設定

    そしたらファイルが取得できるので中身も確認できるのでは?

    思ったことを書いてみました。

    (※そもそも管理できるシステムだったら、そこにWeb API立てればいいじゃんって話もありますが・・・)

    • 編集済み やまよしぃ 2014年1月29日 7:54
    • 回答としてマーク AppKey 2014年1月29日 8:28
    2014年1月29日 7:51
  • AppKeyさん

    こんにちは

    メールの添付ファイルの中身(テキスト)はAppkeyさんが管理できるシステムから飛んでくるものでしょうか?

    仮にそうだとしたらファイルの関連付けでアプリ起動するという手もあると思います。

    ■メール送信側

     添付ファイルの拡張子をストアアプリで設定した拡張子(.mydomaindat みたいな)として作成し、添付。

    ■メール受信側(ストアアプリ)

     指定した拡張子で起動するようにマニフェストを設定

    そしたらファイルが取得できるので中身も確認できるのでは?

    思ったことを書いてみました。

    (※そもそも管理できるシステムだったら、そこにWeb API立てればいいじゃんって話もありますが・・・)

    たいへんありがとうございます。

    ファイル関連付けは便利ですね。

    これで進めようと思います。

     

    重ねて、ありがとうございました。

    2014年1月29日 8:27