メールの保存についてNo.22389
コエンザイムQ10 さん 05/04/05 15:07
 
受信メールを「日付+メールのSubject名」というファイル名にて
テキスト形式ないしは、ワード形式にて保存しようと思い、
下記コードを書きましたが、うまいこといきません。

また、Subject名に「Re」がついているものが、
とくに保存できません。

アドバイス戴けないでしょうか。

*************************

loaddll"TKinfo.dll";

$a=dllfuncstr("GetMailTransmitDate");
$b1=leftstr($a,4)+"年";
//message $b1;

$b2=midstr($a,5,2)+"月";
//message $b2;

$b3=midstr($a,8,2)+"日";
//message $b3;

$d=dllfuncstr("CurrentHeader","Subject:");
$c="D:\\"+$b1+$b2+$b3+$d+ ".doc";
message $c+"で保存します。";

saveas $c;

[ ]
RE:22389 メールの保存についてNo.22390
yamaha31 さん 05/04/05 16:10
 
Re の後ろに付いている : がファイル名に使えないからだと思います。
他にもファイル名に使えない文字として、"*/<>?\| があります。
Subject から、これらの文字を取り除く必要があります。

あと拡張子は .doc よりも .txt にしておいた方が良いと思います。

[ ]
RE:22389 メールの保存についてNo.22392
Iranoan さん 05/04/05 17:34
 
 コエンザイムQ10 さん今日は、Iranoan です。
> 受信メールを「日付+メールのSubject名」というファイル名にて
> テキスト形式ないしは、ワード形式にて保存しようと思い、
> 下記コードを書きましたが、うまいこといきません。
<中略>
> saveas $c;
 ファイル名には、「\/:|*?"<>|」は使えません。これらは別の文字に置き換
えるようにしましょう。

 例えば、
> $c="D:\\"+$b1+$b2+$b3+$d+ ".doc";
> message $c+"で保存します。";
>
> saveas $c;
の部分を、末尾の様に置き換えます。
 因みに
(1) 拡張子を doc にしても、ワード形式になるわけではありません。態々重
    たい Word で開く様な命名にしなくても、*.txt にすれば良い
(2) ドライブ直下に沢山のファイルを置くのは止めた方がよい
と思いますけど。
//--------------------------------------------------------------------
$c=$b1+$b2+$b3+$d;

call ChangeCharacter $c, "\\", "¥";
call ChangeCharacter $$return, "/", "/";
call ChangeCharacter $$return, ":", ":";
call ChangeCharacter $$return, "*", "*";
call ChangeCharacter $$return, "?", "?";
call ChangeCharacter $$return, "\"", "”";
call ChangeCharacter $$return, "<", "<";
call ChangeCharacter $$return, ">", ">";
call ChangeCharacter $$return, "|", "|";
$$return = "D:\\"+$$return+ ".doc";
message $$return+"で保存します。";
endmacro;

ChangeCharacter://buffer 中の文字列を置換
  ##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:22392 メールの保存についてNo.22393
コエンザイムQ10 さん 05/04/05 19:15
 
Iranoanさん

すみません。
サブルーチン changecharacterを使って、
":"を"_"に置き換えたら、ばっちり保存できました。

ありがとうございました。
Q10

> コエンザイムQ10 さん今日は、Iranoan です。
>> 受信メールを「日付+メールのSubject名」というファイル名にて
>> テキスト形式ないしは、ワード形式にて保存しようと思い、
>> 下記コードを書きましたが、うまいこといきません。
><中略>
>> saveas $c;
> ファイル名には、「\/:|*?"<>|」は使えません。これらは別の文字に置き換
>えるようにしましょう。
>
> 例えば、
>> $c="D:\\"+$b1+$b2+$b3+$d+ ".doc";
>> message $c+"で保存します。";
>>
>> saveas $c;
>の部分を、末尾の様に置き換えます。
> 因みに
>(1) 拡張子を doc にしても、ワード形式になるわけではありません。態々重
>    たい Word で開く様な命名にしなくても、*.txt にすれば良い
>(2) ドライブ直下に沢山のファイルを置くのは止めた方がよい
>と思いますけど。
>//--------------------------------------------------------------------
>$c=$b1+$b2+$b3+$d;
>
>call ChangeCharacter $c, "\\", "¥";
>call ChangeCharacter $$return, "/", "/";
>call ChangeCharacter $$return, ":", ":";
>call ChangeCharacter $$return, "*", "*";
>call ChangeCharacter $$return, "?", "?";
>call ChangeCharacter $$return, "\"", "”";
>call ChangeCharacter $$return, "<", "<";
>call ChangeCharacter $$return, ">", ">";
>call ChangeCharacter $$return, "|", "|";
>$$return = "D:\\"+$$return+ ".doc";
>message $$return+"で保存します。";
>endmacro;
>
>ChangeCharacter://buffer 中の文字列を置換
>  ##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;

[ ]