The project of U-WA-
http://uwa.potetihouse.com/
トップページ > 過去ログ > 記事閲覧
アイコン 【TKMP】添付ファイルの展開に失敗する
日時: 2009/09/07 19:11
名前: seaside stars

こんにちは、いつもTKMPを使わせていただいております。

TKMPで不具合らしい現象に遭遇しましたので、ご報告させていただきます。

TKMP.dllを使って、定期的にメールサーバを確認して
メールを受信した場合に、添付ファイルを処理するプログラムを作成しています。

このプログラムで、
メールに添付されたファイルを展開しようとすると、
時々、「ファイル展開エラー」という例外が発生して、
うまく展開できないことがあります。

現象が確認できるプログラムと、メールのソースを添付いたしますので、
ご確認いただけないでしょうか。

なお、メールのソースは、検証用に手作業で作成したものです。
問題が起こるのは、Apple Mailを使って送られた添付ファイルのようで
例外が発生する添付ファイルの名前は、必ず文字化けしています。
ただ、Outlook Expressでは正常に展開できますので、
もし可能でしたら、展開できるように修正していただけないでしょうか。

よろしくお願いいたします。


●C#のプログラム
ここから-----------------------------------------------------------------
TKMP.Reader.MailReader reader = new TKMP.Reader.MailReader("メッセージ.eml", false);
reader.FileCollection[0].FileSave("file.pdf");
ここまで-----------------------------------------------------------------

●「メッセージ.eml」のソース
掲示板に投稿するとタブが消えてしまうようでしたので、
タブの部分を全角スペース×2に置換してあります。

ここから-----------------------------------------------------------------
From: "AAA" <AAA@AAAA.jp>
To: "AAA" <AAA@AAAA.jp>
Subject:
Date: Sun, 6 Sep 2009 18:52:24 +0900
MIME-Version: 1.0
Content-Type: multipart/mixed;
  boundary="----=_NextPart_000_0036_01CA2F23.2C61D3D0"
X-Priority: 3
X-MSMail-Priority: Normal
Importance: Normal
X-Mailer: Microsoft Windows Live Mail 14.0.8064.206
X-MimeOLE: Produced By Microsoft MimeOLE V14.0.8064.206

This is a multi-part message in MIME format.

------=_NextPart_000_0036_01CA2F23.2C61D3D0
Content-Type: text/plain;
  format=flowed;
  charset="iso-2022-jp";
  reply-type=original
Content-Transfer-Encoding: 7bit


------=_NextPart_000_0036_01CA2F23.2C61D3D0
Content-Disposition: inline;
  filename*=ISO-2022-JP''210731%1B%24B%255%25%24%25P%1B%28B%3CBg3X%21%26%3F7%253%21%3C%259%24N35MW0F.pdf
Content-Type: application/pdf;
  x-unix-mode=0644;
  name="=?ISO-2022-JP?B?MjEwNzMxGyRCJTUlJCVQGyhCPEJnM1ghJj83JTMhPCU5JE4z?=
=?ISO-2022-JP?B?NU1XMEYucGRm?="
Content-Transfer-Encoding: base64

g2WDWINn

------=_NextPart_000_0036_01CA2F23.2C61D3D0--
ここまで-----------------------------------------------------------------

よろしくお願いいたします。

Page: 1 |

ファイル Re: 【TKMP】添付ファイルの展開に失敗する ( No.1 )
日時: 2009/09/07 22:46
名前: Toki◆pRU.c9X.EOI

Content-Disposition: inline;
 filename*=ISO-2022-JP''210731%1B%24B%255%25%24%25P%1B%28B%3CBg3X%21%26%3F7%253%21%3C%259%24N35MW0F.pdf

  name="=?ISO-2022-JP?B?MjEwNzMxGyRCJTUlJCVQGyhCPEJnM1ghJj83JTMhPCU5JE4z?=
=?ISO-2022-JP?B?NU1XMEYucGRm?="
の部分で確認してみましたが、
共に変換後のファイル名は
「210731サイバ<Bg3X!&?7%3!<%9$N35MW0F.pdf」
となりました。

また、この部分をThunderbirdで処理してみましたが
同様のファイル名となりました。

この部分は正常に変換するとどの様なファイル名になりますか?

>メールに添付されたファイルを展開しようとすると、
>時々、「ファイル展開エラー」という例外が発生して、
>うまく展開できないことがあります。
これはファイル名にOSで使用できない文字が入っていることが原因だと思われます。

ファイル Re: 【TKMP】添付ファイルの展開に失敗する ( No.2 )
日時: 2009/09/08 11:11
名前: seaside stars

お返事ありがとうございます。

> 共に変換後のファイル名は
> 「210731サイバ<Bg3X!&?7%3!<%9$N35MW0F.pdf」
> となりました。
> この部分は正常に変換するとどの様なファイル名になりますか?

当方もMacOSを持っていないため、文字化けする前のファイル名が分かりません。
Outlook ExpressでもThunderbirdと同じように文字化けいたします。
(Apple Mailのバグなのでしょうか・・・)

ただ、TKMP.Reader.FileクラスのFileNameプロパティでは、
(文字化けした状態ですが)ファイル名を取得することはできますので、
FileSaveメソッドでも、無理矢理、ファイルを展開させることはできないのでしょうか。

Outlook Expressでは、ファイル名は文字化けしていますが、
一応展開はできましたので、TKMPでも、展開できないかなと思った次第です。

ご検討お願いいたします。
ファイル Re: 【TKMP】添付ファイルの展開に失敗する ( No.3 )
日時: 2009/09/08 22:54
名前: Toki◆pRU.c9X.EOI

>FileSaveメソッドでも、無理矢理、ファイルを展開させることはできないのでしょうか。

FileSaveメソッドでファイル名を指定してファイルを保存してください

http://uwa.potetihouse.com/library/tkmp/document/html/M_TKMP_Reader_File_FileSave_1.htm
ファイル Re: 【TKMP】添付ファイルの展開に失敗する ( No.4 )
日時: 2009/09/09 10:34
名前: seaside stars

何度もすみません。

FileSaveメソッドのオーバロードで別のファイル名にして、
保存してみたのですが、やはり、「ファイル展開エラー」という例外が
発生いたします。

TKMP.Reader.MailReader reader = new TKMP.Reader.MailReader("メッセージ.eml", false);
reader.FileCollection[0].FileSave("file.pdf");

特に急ぎませんので、ご確認していただけないでしょうか。
ファイル Re: 【TKMP】添付ファイルの展開に失敗する ( No.5 )
日時: 2009/09/09 12:12
名前: Toki◆pRU.c9X.EOI

TKMP.Reader.MailReader reader = new TKMP.Reader.MailReader("メッセージ.eml", false);
reader.FileCollection[0].FileSave(@"c:\","file.pdf");

こうしても駄目ですか?
ファイル Re: 【TKMP】添付ファイルの展開に失敗する ( No.6 )
日時: 2009/09/09 21:54
名前: seaside stars

> TKMP.Reader.MailReader reader = new TKMP.Reader.MailReader("メッセージ.eml", false);
> reader.FileCollection[0].FileSave(@"c:\", "file.pdf");
> こうしても駄目ですか?

うまくできました!
検証に使っていたプログラムの引数が間違っていました。
ただ単に「ファイル展開エラー」というExceptionでしたので混乱してしまいました。
失礼しました。

ご丁寧にありがとうございます。

Page: 1 |