メールの保存についてNo.35736
虎之助 さん 09/02/27 00:21
 
虎之助です。

秀丸メール5.15を使っています。(Win-xp sp2)

秀丸エディタマクロはサポート会議室がありますが、秀丸メールはなかったので、こ
ちらへ投稿しました。

メール内容を保存したい場合には、一度メールを開いてメールエディタから「ファイ
ル」->「名前を付けて保存」の操作をしていますが、
これがちょっと面倒なので、メール一覧枠の右クリックメニューから保存ができない
かなと思いましたがメニューにはないです。
過去ログを見たら、No.35564でも「印刷」があると便利とあり、マクロで解決になっ
てました。

そこで、ダヴィンチさんの// メールデータのテキストファイル保存機能//(ちょっ
と便利シリーズ)を使って解決しました。
しかし、メールヘッダ(subject、to、cc、dateなど)が保存されていませんでした。
私はメールヘッダを「表示なし」で使っているので、「簡易表示」にしてからマクロ
を実行したら、メールヘッダも保存されました。
一応、期待通りになりましたが、メールヘッダ設定が「表示なし」でもメールヘッダ
を付けて保存するにはどのようにすればいいでしょうか?
マクロ音痴の私にはどうにも。。。。
ご教授をお願いします。

[ ]
RE:35736 メールの保存についてNo.35737
Iranoan さん 09/02/27 02:22
 
 虎之助さん今日は、Iranoan です。
 念の為お断りしておくと、開発者とは何の関わりも無い単なる一ユーザです。
> 一応、期待通りになりましたが、メールヘッダ設定が「表示なし」でもメールヘッダ
> を付けて保存するにはどのようにすればいいでしょうか?
 それもマクロで出来ますね。
 私が普段使っている末尾のマクロで如何でしょう。本体でも、エディタ・
ウィンドウでもどちらでも動作します。「検索して一覧作成」のウィンドウに
ついては、DLL 関数全ての動作が保障されている訳では無いので何とも...。

> 秀丸エディタマクロはサポート会議室がありますが、秀丸メールはなかったので、こ
> ちらへ投稿しました。
 公開済みのマクロについては、
http://www.maruo.co.jp/turukame/5/index.html
そうで無いマクロについての質問は、
http://www.maruo.co.jp/turukame/2/index.html
が良いと思います。
//------------------------------------------------------------
//秀丸メール mail 保存支援 macro
loaddll "tkinfo.dll";
if(result){
  if(!dllfunc("IsTuruKame")){
    message "秀丸メール上でしかこのマクロは利用できません。";
    endmacro;
  }
}
else{
  message "DLL のロードに失敗しました。";
  endmacro;
}
if(dllfunc("MailType") == -1)goto Ending;
$$file = dllfuncstr("CurrentHeader","Subject");
#header = dllfunc("HeaderView");
##tmp = dllfunc("SwitchHeaderView",2);
call ChangeCharacter $$file,"\\","\";
call ChangeCharacter $$return,"/","/";
call ChangeCharacter $$return,":",":";
call ChangeCharacter $$return,";",";";
call ChangeCharacter $$return,"*","*";
call ChangeCharacter $$return,"?","?";
call ChangeCharacter $$return,"<","<";
call ChangeCharacter $$return,">",">";
call ChangeCharacter $$return,"|","|";
call ChangeCharacter $$return,"\"","”";
$$file = $$return + ".txt";
changename $$file;
SAVEAS;
if(!result)changename "";
##tmp = dllfunc("SwitchHeaderView",#header);
goto Ending;

error:
  message "DLL 関数失敗";

Ending:
  freedll;
  endmacro;

ChangeCharacter://buff 中の文字列を置換
  ##change_char=strlen($$2);
  $$string = "";
  while(1){
    ##number = strstr($$1, $$2);
    if(##number == -1)break;
    else{
      ##long=strlen($$1);
      $$string = $$string + leftstr($$1, ##number) + $$3;
      $$1 = rightstr($$1, ##long - ##number - ##change_char);
    }
  }
  return $$string + $$1;

[ ]
RE:35737 メールの保存についてNo.35738
Iranoan さん 09/02/27 02:35
 
 虎之助さん今日は、Iranoan です。
>  私が普段使っている末尾のマクロで如何でしょう。
 このマクロについて一つ書き忘れていました。
> 私はメールヘッダを「表示なし」で使っているので、「簡易表示」にしてからマクロ
> を実行したら、メールヘッダも保存されました。
> 一応、期待通りになりましたが、メールヘッダ設定が「表示なし」でもメールヘッダ
> を付けて保存するにはどのようにすればいいでしょうか?
のヘッダの表示方法についてですが、マクロの
> ##tmp = dllfunc("SwitchHeaderView",2);
の「2」部分を適当に変更してもらえば良いです。どの数字にすると良いかは、
マクロ・ヘルプを見て頂ければすぐに解ります(^^)。

[ ]
RE:35736 メールの保存についてNo.35740
秀まるお2 さん 09/02/27 11:43
 
 Iranoanさんのマクロが難しそうなので念のため僕もコメントさせていただき
ますと、マクロとしては、以下のようなシンプルな内容でいいんじゃないかと思
います。

    loaddll "tkinfo.dll";
    #v = dllfunc("HeaderView");
    if( #v != 1 ) {
        #n = dllfunc("SwitchHeaderView", 1);
    }
    SAVEAS;
    #n = dllfunc("SwitchHeaderView", #v);

 それを例えば「HidemaruMailSaveAs.mac」とかいう名前で保存して、それを
「マクロ・マクロ登録・秀丸メール本体側」に登録しておいて、さらに「全般的
な設定・メール一覧・右ボタンメニュー」の所でマウス右ボタンに表示するよう
設定しておけばいいと思います。

[ ]
RE:35740 メールの保存についてNo.35757
虎之助 さん 09/02/27 23:42
 
虎之助です。

Iranoanさん、秀まるおさん
ありがとうございました。

Iranoanさんに書いていただいたマクロは、「式がおかしいです」がでました。18行目。
 call ChangeCharacter $$file,"\\","\";
最後に;はありますけど。。。
最後の方の"\"を"\\"にしてみました。他の行も同じようになっていたので。
修正してやってみたら、
 「ファイル名が有効でありません。
  動作環境のワイルドカードの指定が正しいかどうか確認して下さい」
のダイアログがでました。

ということで、秀まるおさんのマクロでやってみました。

期待したとおりになりました。

たいしたことではないですが、保存する時にエンコードの種類で判別できない場合は、
「文字コード変換できない文字が含まれています」ダイアログがでます。
これは、これでいいのですが、「はい」をクリックした後に、「・・・読み直します
か?」のダイアログが表示され、「はい」をクリックしてもその後の動作がありませ
ん。
この辺は、秀丸エディタマクロのsaveasを使っているかですか?

[ ]
RE:35757 メールの保存についてNo.35758
Iranoan さん 09/02/28 00:48
 
 虎之助さん今日は、Iranoan です。
>  call ChangeCharacter $$file,"\\","\";
 ごめんなさい。
 送信時に 全角→半角 変換マクロを使っていることをすっかり忘れていまし
た(^^;。末尾に改めて付けておきます。
 やっているのは、保存のためのダイアログ・ボックスを開いた時に、ファイ
ル名の初期値に、できるだけ Subject に近い文字を入れているだけなので、
> ということで、秀まるおさんのマクロでやってみました。
>
> 期待したとおりになりました。
ということなので、必要ないとは思いますが。

> これは、これでいいのですが、「はい」をクリックした後に、「・・・読み直します
> か?」のダイアログが表示され、「はい」をクリックしてもその後の動作がありませ
> ん。
 秀丸エディタのコードが中途半端に残っているようですね。

> この辺は、秀丸エディタマクロのsaveasを使っているかですか?
 ダイアログ・ボックスを表示する SAVEAS 文を使っていますね。

//-------------------- 秀丸メール保存支援マクロ --------------------
loaddll "tkinfo.dll";
if(result){
  if(!dllfunc("IsTuruKame")){
    message "秀丸メール上でしかこのマクロは利用できません。";
    endmacro;
  }
}
else{
  message "DLL のロードに失敗しました。";
  endmacro;
}
if(dllfunc("MailType") == -1)goto Ending;
$$file = dllfuncstr("CurrentHeader","Subject");
#header = dllfunc("HeaderView");
##tmp = dllfunc("SwitchHeaderView",2);
call ChangeCharacter $$file,"\\","¥";
call ChangeCharacter $$return,"/","/";
call ChangeCharacter $$return,":",":";
call ChangeCharacter $$return,";",";";
call ChangeCharacter $$return,"*","*";
call ChangeCharacter $$return,"?","?";
call ChangeCharacter $$return,"<","<";
call ChangeCharacter $$return,">",">";
call ChangeCharacter $$return,"|","|";
call ChangeCharacter $$return,"\"","”";
$$file = $$return + ".txt";
changename $$file;
SAVEAS;
if(!result)changename "";
##tmp = dllfunc("SwitchHeaderView",#header);
goto Ending;

error:
  message "DLL 関数失敗";

Ending:
  freedll;
  endmacro;

ChangeCharacter://buff 中の文字列を置換
  ##change_char=strlen($$2);
  $$string = "";
  while(1){
    ##number = strstr($$1, $$2);
    if(##number == -1)break;
    else{
      ##long=strlen($$1);
      $$string = $$string + leftstr($$1, ##number) + $$3;
      $$1 = rightstr($$1, ##long - ##number - ##change_char);
    }
  }
  return $$string + $$1;

[ ]
RE:35758 メールの保存についてNo.35762
虎之助 さん 09/02/28 16:15
 
虎之助です。

Iranoanさん
夜遅くの対応ありがとうございました。
お手数お掛けします。

> 送信時に 全角→半角 変換マクロを使っていることをすっかり忘れていまし
>た(^^;。末尾に改めて付けておきます。

のマクロを試してみました。
問題はありませんでした。

[ ]
RE:35762 メールの保存についてNo.35766
秀まるお2 さん 09/03/01 20:07
 
 SAVEASした時に変換出来ない文字についての警告が出て、そのあと読み込み直
しすると出てくるにも関わらず読み込みしないのは、秀丸エディタの処理が中途
半端に残っているからってことのようです。

 秀丸メール上では読み込み直しというのはありえないので、読み込み直ししな
いように修正したいと思います。

[ ]