[Q]添付付き状態の解除No.12143
まいふぇろう さん 03/03/29 14:34
 
またまた、お騒がせな相談です(鶴亀初心者ということでお許し下
さい)。

送信済みメールの整理をしてまして...

範囲を添付付きにして、全部の添付ファイルを削除したのですが、
このとき深く考えずに「ファイルを削除するのみ」としてしまった
ために、添付のアイコンが当然残ってしまいました。よくよく考え
たら、次回整理する時、範囲を添付付きにしたら、またこれが出て
きてしまうのは鬱陶しいと思い、プロパティから添付付きを解除し
ようとしたらできません。

もう一度Delキーを押して2番目(改変してアイコンをなくす)を
選択して実行したら、改変マークと添付付きになってしまいました。

エクスポートしてインポートしても、正確には元の状態に戻りませ
ん(自動折り返し禁止が再現されない)。

なんとか、送信日時を改変することなく、添付付きのアイコンを削
除したいのですが、方法はありますでしょうか?(もうすでに添付
ファイルは削除されています)。

できれば、
もう一度添付ファイルの削除操作をしたら、削除に失敗しても処理
を続行して(ヘッダを書き換えて)、希望の状態(改変してアイコ
ンをなくす、改変して無かったことにする)にしていただけるとう
れしいのですが。悪影響がありますでしょうか。

↑添付のフォルダをエクスプローラで削除してしまった(あるいは、
リカバリしたときに添付が復元できなかった)場合にも対応できる
と思うのですが...

[ ]
RE:12143 [Q]添付付き状態の解除No.12145
ひろ さん 03/03/29 16:03
 
 まいふぇろうさん今日は、ひろです。
> もう一度Delキーを押して2番目(改変してアイコンをなくす)を
> 選択して実行したら、改変マークと添付付きになってしまいました。
 X-Attach を消すなり他のヘッダに書き直せばよいです。例えばアイコンだ
け消して、添付ファイルがあったという情報自体は消したくないなら、次のよ
うなマクロになります。
//--------------------------------------------------------------------
loaddll "tkinfo.dll";
$account = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount") + "\\";
if(dllfunc("IsTuruKameMain")){
  #tmp = dllfunc("OpenMail");
}
if(readonly){
  #tmp = dllfunc("EnableEdit");
}
#tmp = dllfunc("SwitchHeaderView", 2);
#attach = dllfunc("CountCurrentHeader", "X-Attach") - 1;
#i = dllfunc("CountCurrentHeader", "X-DelAttach");
while(#attach >= 0){
  $attach = dllfuncstr("CurrentHeader2", "X-Attach", #attach);
  $file = $account + $attach;
  if((!existfile($file)) && $attach != ""){
    #tmp = dllfunc("AddHeader", "X-DelAttach", $attach );
    moveto 0, -9999;
    searchdown2 "^X-Attach: ", regular;
    searchdown2 $attach;
    if(result){
      selectline;
      delete;
    }
    #i = #i + 1;
  }
  #attach = #attach - 1;
}
save;
#tmp = dllfunc("SetMailFlag", "altered", 0);
freedll;

[ ]
RE:12145 [Q]添付付き状態の解除No.12152
まいふぇろう さん 03/03/29 23:31
 
ひろさん、ありがとうございます。
さっそくマクロを試してみましたが、送信日付を変更させないで保
存できますでしょうか?

[ ]
RE:12152 [Q]添付付き状態の解除No.12164
ひろ さん 03/03/30 22:11
 
 まいふぇろうさん今日は、ひろです。
> さっそくマクロを試してみましたが、送信日付を変更させないで保
> 存できますでしょうか?
 試したなら、日付が変わらずに保存されていることが解ると思いますが...。
確かに送信メールでは上手く行きませんが、そこまで必要でしょうか?

[ ]
RE:12164 [Q]添付付き状態の解除No.12182
まいふぇろう さん 03/03/31 18:51
 
>  試したなら、日付が変わらずに保存されていることが解ると思いますが...。
> 確かに送信メールでは上手く行きませんが、そこまで必要でしょうか?

保存した時点でDate:が変わってしまいます。日付を書き換えない
操作方法があるのでしょうか?
送信済みメールのDate:は私にとって重要です。送信記録(いつ送
ったか)として必要ですので。

では、別の切り口で、
サイズを実際の(添付を取り除いたサイズ)に変更するコマンドと
かないでしょうか?添付付きをリストアップして、一覧で眺めれば、
添付を整理(削除)しているかいないかが判別しやすいと思います
ので。

メール一覧を作成しなおせば、実際のサイズに変わってくれるかな、
と期待してやってみたのですが、書き換わらないですね(メールフ
ァイルにサイズ情報が書き込まれているようですね)。

[ ]
RE:12182 [Q]添付付き状態の解除No.12183
ひろ さん 03/03/31 19:28
 
 まいふぇろうさん今日は、ひろです。
> 保存した時点でDate:が変わってしまいます。日付を書き換えない
> 操作方法があるのでしょうか?
> 送信済みメールのDate:は私にとって重要です。送信記録(いつ送
> ったか)として必要ですので。
 送信済みメールは考慮していなかったので、確かに上手く行きません。修正
したマクロをアップし直します。
//--------------------------------------------------------------------
loaddll "tkinfo.dll";
$account = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount") + "\\";
if(dllfunc("IsTuruKameMain")){
  #tmp = dllfunc("OpenMail");
}
if(readonly){
  #tmp = dllfunc("EnableEdit");
}
#tmp = dllfunc("SwitchHeaderView", 2);
#attach = dllfunc("CountCurrentHeader", "X-Attach") - 1;
#i = dllfunc("CountCurrentHeader", "X-DelAttach");
#type = dllfunc("MailType");
if( #type == 4)#tmp = dllfunc("SetMailFlag", "send", 0 );
while(#attach >= 0){
  $attach = dllfuncstr("CurrentHeader2", "X-Attach", #attach);
  $file = $account + $attach;
  if((!existfile($file)) && $attach != ""){
    #tmp = dllfunc("AddHeader", "X-DelAttach", $attach );
    moveto 0, -9999;
    searchdown2 "^X-Attach: ", regular;
    searchdown2 $attach;
    if(result){
      selectline;
      delete;
    }
    #i = #i + 1;
  }
  #attach = #attach - 1;
}
save;
#tmp = dllfunc("SetMailFlag", "altered", 0);
if( #type == 4){
  #tmp = dllfunc("SetMailFlag", "send", 1 );
  #tmp = dllfunc("SetMailFlag", "sent", 1 );
}
freedll;

[ ]
RE:12183 [Q]添付付き状態の解除No.12198
まいふぇろう さん 03/04/01 19:10
 
>  送信済みメールは考慮していなかったので、確かに上手く行きません。修正
> したマクロをアップし直します。

何度もお手数おかけして申し訳ありません。
しかし、今回もうまく動かないようです。添付アイコンは消えてく
れません(リストが一瞬チラつくので、書き戻しの動作が動いたよ
うに見えるのですが、書き換わっていません)。何かのタイミング
で元メールが書き換わることがあるようですが、そのときは亀が鶴
に(受信メールに)なってしまうという現象も起きたりしました
(添付アイコンはそのまま、再現性は不定)。

エディタを閉じる時、保存すれば添付アイコンの消えた別メールと
して保存されます(X-Attach: も、X-DelAttach: に変更されてい
ます)が、やはり送信日付(Date:)は変わってしまうようです。

ひろさんのところで動いて、私のところではダメということは、そ
もそも、私の操作が間違っている気がしてきました。

↓私の操作です。
1.送信済みフォルダのメールを選択
2.マクロ実行
3.エディタを閉じる(保存はキャンセル)

--
鶴亀 V2.60 / Windows XP Home Edition SP1

[ ]
RE:12198 [Q]添付付き状態の解除No.12199
ひろ さん 03/04/01 19:55
 
 まいふぇろうさん今日は、ひろです。
> 1.送信済みフォルダのメールを選択
> 2.マクロ実行
> 3.エディタを閉じる(保存はキャンセル)
 「送信済みフォルダ」のメールでは上手く行きませんね。それでは、最新の
Ver.2.60 が必要になりますが、本体で書き換えるようにしないと駄目という
ことで、再度マクロをアップし直します。
//--------------------------------------------------------------------
loaddll "tkinfo.dll";
$account = dllfuncstr("HomeDir") + dllfuncstr("CurrentAccount") + "\\";
if(!dllfunc("IsTuruKameMain")){
  #Sync = hidemaruhandle(0);
  if(!dllfunc("Sync"))goto Error;
  if(!dllfunc("SetMainWndTop"))goto Error;
}
if(dllfunc("MailType") == -1)goto End;
#header = dllfunc("HeaderView");
#tmp = dllfunc("DisableDraw", 1);
#tmp = dllfunc("SwitchHeaderView", 2);
#attach = dllfunc("CountCurrentHeader", "X-Attach") - 1;
#i = dllfunc("CountCurrentHeader", "X-DelAttach");
if(!dllfunc("BeginEditMail"))goto Error;
while(#attach >= 0){
  $attach = dllfuncstr("CurrentHeader2", "X-Attach", #attach);
  $file = $account + $attach;
  if((!existfile($file)) && $attach != ""){
    #tmp = dllfunc("AddHeader", "X-DelAttach", $attach );
    if(!dllfunc("DeleteHeader2", "X-Attach", #attach ))goto Error;
    #i = #i + 1;
  }
  #attach = #attach - 1;
}
if(!dllfunc("SaveEditMail", 1, 0))goto Error;
#tmp = dllfunc("SwitchHeaderView", #header);
#tmp = dllfunc("EnableDraw");
if(#Sync){
  closehidemaru(#Sync);
  if(!dllfunc("OpenMail"))goto Error;
}
goto End;

Error:
  message "DLL 関数失敗";
End:
  freedll;

[ ]
RE:12199 [Q]添付付き状態の解除No.12234
まいふぇろう さん 03/04/03 19:44
 
> ことで、再度マクロをアップし直します。

ひろさん、何度もお手数おかけしました。
今度は動きました!しかも、サイズが添付を取り除いたサイズに戻
るようで、これはうれしい副作用です。
このマクロは大事に使わせていただきます。
ありがとうございました。

[ ]