トップ回答者
メールの添付ファイル(中は文字)を取り込みたい。

質問
-
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では
有効な範囲外のデータにアクセスしようとしました
とでます。
回答
-
AppKeyさん
こんにちは
メールの添付ファイルの中身(テキスト)はAppkeyさんが管理できるシステムから飛んでくるものでしょうか?
仮にそうだとしたらファイルの関連付けでアプリ起動するという手もあると思います。
■メール送信側
添付ファイルの拡張子をストアアプリで設定した拡張子(.mydomaindat みたいな)として作成し、添付。
■メール受信側(ストアアプリ)
指定した拡張子で起動するようにマニフェストを設定
そしたらファイルが取得できるので中身も確認できるのでは?
思ったことを書いてみました。
(※そもそも管理できるシステムだったら、そこにWeb API立てればいいじゃんって話もありますが・・・)
すべての返信
-
AppKeyさん
こんにちは
メールの添付ファイルの中身(テキスト)はAppkeyさんが管理できるシステムから飛んでくるものでしょうか?
仮にそうだとしたらファイルの関連付けでアプリ起動するという手もあると思います。
■メール送信側
添付ファイルの拡張子をストアアプリで設定した拡張子(.mydomaindat みたいな)として作成し、添付。
■メール受信側(ストアアプリ)
指定した拡張子で起動するようにマニフェストを設定
そしたらファイルが取得できるので中身も確認できるのでは?
思ったことを書いてみました。
(※そもそも管理できるシステムだったら、そこにWeb API立てればいいじゃんって話もありますが・・・)
-
AppKeyさん
こんにちは
メールの添付ファイルの中身(テキスト)はAppkeyさんが管理できるシステムから飛んでくるものでしょうか?
仮にそうだとしたらファイルの関連付けでアプリ起動するという手もあると思います。
■メール送信側
添付ファイルの拡張子をストアアプリで設定した拡張子(.mydomaindat みたいな)として作成し、添付。
■メール受信側(ストアアプリ)
指定した拡張子で起動するようにマニフェストを設定
そしたらファイルが取得できるので中身も確認できるのでは?
思ったことを書いてみました。
(※そもそも管理できるシステムだったら、そこにWeb API立てればいいじゃんって話もありますが・・・)
たいへんありがとうございます。
ファイル関連付けは便利ですね。
これで進めようと思います。
重ねて、ありがとうございました。