エラーウィンドウについてNo.46951
すみこ さん 14/10/27 20:55
 
定期受信をしていたのですが、エラーウィンドウが表示され
受信が停止していました。

考えられる原因はありますでしょうか。
また、対策はありますでしょうか。

+++エラーウィンドウ+++
添付ファイル/HTMLメール用ファイルのパスが間違っていますが、処理を続行します。
パス名:Encrypt

[ ]
RE:46951 エラーウィンドウについてNo.46955
秀まるお2 さん 14/10/28 09:34
 
 エラーでお手数かけてすみません。

 そのエラーが受信中に出た(受信以外の操作を何もしてないのに出た)という
ことであれば、たぶんですが、振り分けでメールをコピーするようなアクション
を指示されていて、そのコピーの最中に、添付ファイルをコピーするのに失敗し
てエラーが出たのではないかと思います。

 コピーか、または、もしかしてアカウントをまたがってメールを移動するよう
な振り分け指示があったとしたらありえます。

 その辺どうでしょうか…。

 で、さらに、メールの中に、なぜだか分かりませんが、

X-Attach: Encrypt

 のようなヘッダが混じってしまったのかなぁと思います。そのようなヘッダが
なぜ発生するのかいまいち分からないのですが、仮にそういうことがあれば、問
題のエラーが出ると思います。

 とりあえず、根本的な原因(X-Attach: Encrypt)が発生する理由は別にして、
対症療法として、そういうヘッダがあってエラーになったとしても、それが受信
の最中であったとしたら、エラーメッセージを表示することなく受信を完了し、
受信が完了した後にまとめてエラーを表示するって修正をさせていただきます。

 受信後に出てくるエラーは、数分で自動で消えます。

 あと、そもそもの「X-Attach: Encrypt」のようなヘッダが発生する原因は、
ちょっと分からないのですが…。

 とりあえず、"Encryt"って文字列を「すべてのヘッダ+本文」で全検索してみ
て、どのメールで発生してるのか調べていただけないでしょうか。あと、その
メールのその"Encrypt"って文字列がなぜ発生してるのかって分かったら教えて
欲しいです。

[ ]
RE:46955 エラーウィンドウについてNo.46964
すみこ さん 14/10/28 20:38
 
回答ありがとうございます。

メールを受信した後に
以前にアドバイスをいただいたマクロを自動起動で流しております。

メールを振り分けるような設定はしてないです。(もちろんコピーも)
アカウントもひとつしか設定してないです。

>対症療法として、そういうヘッダがあってエラーになったとしても、それが受信
>の最中であったとしたら、エラーメッセージを表示することなく受信を完了し、
>受信が完了した後にまとめてエラーを表示するって修正をさせていただきます。
上記の対処療法は次のバージョンアップの際にってことでしょうか??

また、こちらの事情ではありますが、
メールをすべて回収してしまっているので「全検索」ができませんでした。
すみません。


---マクロ内容---
// 1アカウント丸ごとエクスポートマクロ

loaddll "TKInfo.dll";

if ( !result )  endmacro;
if ( !dllfunc( "IsTuruKame" ) )  endmacro;
 
// エクスポート先のベースディレクトリ
// 適宜修正してください
$base_dir = "C:\\temp\\mail\\";

#n = dllfunc( "SelectFolder", "", "" );
$currentAccount = dllfuncstr( "CurrentAccount" ); // アカウント名を記録しておく

while (1) {
 #n = dllfunc( "ExpandFolder", 1 );
 #n = dllfunc("NextFolder");
 if (#n == 0) {
   goto DeleteAll
        endmacro;
 }
 
 $account = dllfuncstr( "CurrentAccount" );
 if ($account != $currentAccount) {
   goto DeleteAll

        endmacro;
 }
 
 $folder = dllfuncstr( "CurrentFolder" );
 if ($folder == "受信" || $folder == "未送信" || $folder == "草稿" || $folde
r == "ゴミ箱")  continue;  // エクスポート対象外
 
 call ExportAllMails;
}

endmacro;

// 渡されたパスのディレクトリを作成するサブルーチン
// MakeSureDirectoryPathExists関数と同じ
CreateDirectory:
 $$dir = $$1;
 $$mkdir = "";
 
 ##pos = strstr($$dir, "\\");
 while (##pos >= 0) {
  if (strlen($$mkdir) > 0)  $$mkdir = $$mkdir + "\\";
  $$mkdir = $$mkdir + leftstr($$dir, ##pos);
  $$dir = rightstr($$dir, strlen($$dir) - ##pos - 1);
  ##n = dllfunc("Bypass_CreateDirectory", $$mkdir);
 
  ##pos = strstr($$dir, "\\");
 }
 
 if (strlen($$dir) > 0 ) {
  if (strlen($$mkdir) > 0)  $$mkdir = $$mkdir + "\\";
  $$mkdir = $$mkdir + $$dir;
  ##n = dllfunc("Bypass_CreateDirectory", $$mkdir);
 }
 
 return;

// 現在選択されているフォルダの、全てのメールをエクスポートするサブルーチン
ExportAllMails:
 ##n = dllfunc( "GetFolderMailCount", "", "", "all");
 if (##n == 0)  return;

 ##n = dllfunc("SetViewArea", 0);
 ##n = sendmessage( hidemaruhandle(0), 0x0111, 40008, 0);
 $$folder = dllfuncstr( "CurrentFolder" );
 call CreateDirectory $base_dir + $$folder;
 ##n = dllfunc("Export", $base_dir + $$folder, "eml-number", "encode-attach",
 "orikaeshi");

 return;

DeleteAll:
    #n = dllfunc("SelectFolder", $currentAccount, "" );
    if( #n == 0 ) endmacro;

    while (1) {
        #n = dllfunc( "ExpandFolder", 1 );
        #n = dllfunc("NextFolder");
        if (#n == 0) {
            break;
        }
        $account = dllfuncstr( "CurrentAccount" );  
        if ($account != $currentAccount) {
            break;
        }
        $folder = dllfuncstr( "CurrentFolder" );
        if ($folder == "未送信" || $folder == "草稿")  continue;
        #n = dllfunc("SetViewArea", 0);
        #n = dllfunc("SelectAllMail");
        #n = dllfunc("Delete", 1);
    }
    #n = dllfunc( "SelectFolder", $currentAccount, "" );
        endmacro;


[ ]
RE:46964 エラーウィンドウについてNo.46975
秀まるお2 さん 14/10/29 12:03
 
 振り分けアクションで「コピー」などされてないということは、エラーが出た
のはマクロのせいってことになるかと思います。

 エラーが出る詳しい原因は別にして、そもそもですが、「エクスポート」の処
理は、いろんな理由でエラーメッセージが出る可能性が多々ありまして、そのよ
うな処理を、定期受信で無人運転させる中で自動実行させるというのは無理があ
ります。

 その辺含めて、何かいい案が無いか考えたいと思いますが…。

 そもそも論として、なぜ、受信の度にアカウント内のメールまるごと全部エク
スポートする必要があるのでしょうか。受信したメールのバックアップが必要っ
てことなのやら?。その辺の理由から教えて欲しい気がします。

 その辺の理由というか、何がしたいのかってことの最終的なことが分かれば、
もっと別の解決策をお返事することが出来るような気がします。出来ればどうい
うお仕事に利用されてるとか、エクスポートしたファイルを何に利用してるのか
とか、もっと細かいことも教えていただけると返事がしやすいです。

[ ]
RE:46975 エラーウィンドウについてNo.46976
すみこ さん 14/10/29 15:57
 
受信の度にアカウント内のメールまるごと全部エク
スポートする必要があるのでしょうか。
→受信したメールを「.eml形式」にして、1つのフォルダに格納したいのです。
(添付物もバラバラにならない)
.eml形式という条件があります。

エクスポート後に受信メールを削除するのは、
ディスク容量がひっ迫してしまうのを懸念しております。

エラーが出ても、継続して受信を続ける(止まらず運用)をしたいと
思っています。

無人でマクロ+定期受信は無謀かと思いますが、
ここまでできるメーラーが秀丸メールしかなかったので、利用させていただきており
ます。

[ ]
RE:46976 エラーウィンドウについてNo.46977
秀まるお2 さん 14/10/29 16:51
 
 いろいろ調べてみたら、そもそも秀丸メールの方に、こういう無人運転で
マクロ実行する時にエラーメッセージを表示しない用の処理がありました。

 秀丸マクロに「disableerrormsg」って文があるんですが、それを実行すると、
エラーメッセージの表示が抑止されます。ただ、エクスポートでエラーになった
場合は現状そのまま出てしまうようです。

 とりあえず、今回エラーが出てるのはExportの処理じゃなくて、Deleteって関
数呼び出しの先だと思うので、それのエラーを出さない用に、マクロの先頭に

    disableerrormsg;

 の1文を入れてみて欲しいです。それでとりあえず止まる確率は低くなると思
います。

 エクスポートでエラーメッセージが出てしまう件については、次のβ版(V6.
31β18)にて出ないように修正させていただきます。なので、また次のβ版が出
たらインストールして欲しいです。

 その作戦でお願いします。

[ ]
RE:46977 エラーウィンドウについてNo.47120
すみこ さん 14/12/05 11:54
 
返信おそくなりました。。

いつもアドバイスありがとうございます。
ご教授いただいた方法を試してみます。

[ ]