2

add-inドラッグ アンド ドロップ領域を作成しているOutlook を作成しています。
コントロールにドラッグアンドドロップされたメールを取得したい。次のコードを使用しました。

    private void DragDropControl_DragDrop(object sender, DragEventArgs e)
    {
        //wrap standard IDataObject in OutlookDataObject
        OutlookDataObject dataObject = new OutlookDataObject(e.Data);

        //get the names and data streams of the files dropped
        string[] filenames = (string[])dataObject.GetData("FileGroupDescriptorW");
        //get the Mail Item here.
        MemoryStream[] filestreams = (MemoryStream[])dataObject.GetData("FileContents");

        this.label2.Text += "Files:\n";
        for (int fileIndex = 0; fileIndex < filenames.Length; fileIndex++)
        {
            //use the fileindex to get the name and data stream
            string filename = filenames[fileIndex];
            MemoryStream filestream = filestreams[fileIndex];
            this.label2.Text += "    " + filename + "\n";

            //save the file stream using its name to the application path
            FileStream outputStream = File.Create(filename);
            filestream.WriteTo(outputStream);

            byte[] bytesInStream = new byte[outputStream.Length];

            //I don't want to save file to the local drive or something like this.
            var fileStream = File.Create("C:\\TestFileSave\\" + filename + ".msg");

            outputStream.Seek(0, SeekOrigin.Begin);
            outputStream.CopyTo(fileStream);

            fileStream.Close();

            outputStream.Close();

            readMessage(filename);
        }
    }

関数ではreadMessage(filename)、保存されたファイルを取得し、MailItem.

しかし、管理者権限なしで Outlook を実行すると、実際の問題が発生し、次のようなエラーが表示されます。

ここに画像の説明を入力

ファイルをローカルドライブに保存せずに変換する他の方法はありますOutlook.MailItemか?

どんな助けでも大歓迎です。

4

0 に答える 0