自動で転送させたいですNo.03403
cuma さん 01/05/31 07:21
 
いつもお世話になっています。
今度はメール受信時に特定フォルダに振り分けられたメールだけを
他のアカウントに転送したいのです。
これもマクロで可能でしょうか?

具体的には受信時に

フォルダA

に振り分けられた(受信時振分条件にて)メールをその瞬間に
他のアカウントに転送したいのです。

目的としているやりたい事は、緊急性の高い業務メールだけを
関連する人の携帯またはパソコンに転送したいのです。

[ ]
RE:03403 自動で転送させたいですNo.03404
tatuto さん 01/05/31 07:35
 
tatutoです。

cuma<xxxxxxxxxx@maruo.co.jp>さんより適座引用しています。

>今度はメール受信時に特定フォルダに振り分けられたメールだけを
>他のアカウントに転送したいのです。
>これもマクロで可能でしょうか?

俺は詳しいことは分かりませんが
8番会議室の
01399のスレッドが参考になると思いますよ
それと現行バージョンでサポートされている
テンプレートの$(ExecMacro,マクロ名)を使えば良いかと

[ ]
RE:03404 自動で転送させたいですNo.03405
tatuto さん 01/05/31 07:41
 
tatutoです。

tatuto<xxxxxxxxxx@maruo.co.jp>さんより適座引用しています。

>テンプレートの$(ExecMacro,マクロ名)を使えば良いかと

これはあんま関係ないかな? (^_^;)

[ ]
RE:03404 自動で転送させたいですNo.03408
cuma さん 01/05/31 09:39
 

>俺は詳しいことは分かりませんが
>8番会議室の
>01399のスレッドが参考になると思いますよ

今見てきました。
参考となりそうです。でもマクロが作成できない私には。。。。

出きれば他のメーラーでサポートされている今回のような機能は
標準マクロ?として公開されていると助かるなあと思いました。

出来そうな事がわかってよかったです。

ありがとうございました

[ ]
RE:03404 マクロ作ってみたんですがNo.03410
cuma さん 01/05/31 10:19
 
どなたかHELP!
上記のスレッドを参照してマクロを作成してみました。
やりたいのは
アカウント:hi-ho
フォルダ:受信\見積\共同携帯\控え
に自動振り分けされたメールを指定アドレスへ転送
するものです。

ここで実験するとマクロがおかしいですと言うエラーになります。
マクロは起動されているようですが、たぶん私がカスタマイズした
部分がおかしいようです。
特にヘッダーの書き込みのタイミングなど自分では怪しいと感じます。

また正直言って流用したマクロで
            #handle = hidemaruhandle(0);
            #n = dllfunc("SetMainWndTop");
            closehidemaru #handle;
の部分は全く理解出来ないです。
この部分はマクロヘルプでは調査してのですが、実際のところよく
分かりませんでした。どなたか初心者向けにご説明お願い出来れば
幸いです。      

    loaddll "tkinfo.dll";
    #n = dllfunc("SelectFolder",hi-ho, "受信\見積\共同携帯\控え");
    while( dllfunc("SelectRecvMail") ) {
        #n = dllfunc("MakeForward");
    #n = dllfunc("SetHeader", "To", aa@aa.ne.jp );
        if( #n ) {
            #n = dllfunc("SendLater");
            #handle = hidemaruhandle(0);
            #n = dllfunc("SetMainWndTop");
            closehidemaru #handle;
        }
    }

[ ]
RE:03410 マクロ作ってみたんですがNo.03416
ひろ さん 01/05/31 12:09
 
 cuma さん今日は、ひろです。
> ここで実験するとマクロがおかしいですと言うエラーになります。
 投稿されたマクロは、どの行がおかしいか表示されますので、ご自分で確
認して解らなければ致し方ありませんが、基本的にはまずその部分は確認し
てくださいね。

 さて一つ一つ指摘していくのは面倒なので、以下に例を示しますので、元
のマクロと比べてみてください。ただし以下のマクロでは、「受信\見積\共
同携帯\控え」を選択した時点で、既に「直前の受信動作によって受信した
メール」を選択していた場合や MakeForward を行った時点で、「未読」情
報が消去さたた場合の対処などをしていません。この辺りのことは、cuma
さんの運用方法によって適宜変更してください。
//-------------------------------------------------------------------
loaddll "tkinfo.dll";
if( !dllfunc("SelectFolder","hi-ho", "受信\見積\共同携帯\控え") )
  goto DllError;
while( dllfunc("SelectRecvMail") ) {
  if( dllfuncstr( "CurrentAccount" ) != "hi-ho" ||
    dllfuncstr( "CurrentFolder" ) != "受信\見積\共同携帯\控え" )break;
  if( !dllfunc("MakeForward") )goto DllError;
  $tmp = dllfunc("SetHeader", "To", "aa@aa.ne.jp" );
  if( !dllfunc("SendLater") )goto DllError;
  #handle = hidemaruhandle(0);
  if( !dllfunc("SetMainWndTop") )goto DllError;
  closehidemaru #handle;
}
goto End;

DllError:
  message "DLL 関数エラー";
End:
  freedll;
  endmacro;

[ ]
RE:03416 マクロ作ってみたんですがNo.03418
cuma さん 01/05/31 14:23
 
ひろさん こんにちは

> cuma さん今日は、ひろです。
>> ここで実験するとマクロがおかしいですと言うエラーになります。
> 投稿されたマクロは、どの行がおかしいか表示されますので、ご自分で確
>認して解らなければ致し方ありませんが、基本的にはまずその部分は確認し
>てくださいね。

エラー行が表示されていたと言うことを知りませんでした。
失礼しました。

それからマクロの実例をありがとうございます。
エラー処理があってグレードアップした感じです。

早速参考にさせていただきました。
そして再び何かのエラーがあるようだったので、エラー場所が
分かるように改造したのですが、

loaddll "tkinfo.dll";
if( !dllfunc("SelectFolder","hi-ho", "受信\見積\共同携帯\控え") )
  goto DllError0;
while( dllfunc("SelectRecvMail") ) {
  if( dllfuncstr( "CurrentAccount" ) != "hi-ho" ||
    dllfuncstr( "CurrentFolder" ) != "受信\見積\共同携帯\控え" )break;
  if( !dllfunc("MakeForward") )goto DllError1;
  $tmp = dllfunc("SetHeader", "To", "xxxx@vanilla.freemail.ne.jp" );
  if( !dllfunc("SendLater") )goto DllError2;
  #handle = hidemaruhandle(0);
  if( !dllfunc("SetMainWndTop") )goto DllError3;
  closehidemaru #handle;
}
goto End;

DllError0:
  message "DLL 関数エラー0";
  goto End;

DllError1:
  message "DLL 関数エラー1";
  goto End;

DllError2:
  message "DLL 関数エラー2";
  goto End;

DllError3:
  message "DLL 関数エラー3";
  goto End;

End:
  freedll;
  endmacro;

ここでDLL関数エラー1が出ます。
つまりSelectFolderの行でエラーのようなのですが、
指定したアカウントもフォルダも何度見てもあってます。
ここでエラーになる要因はほかにどんな理由が考えられるでしょうか?

[ ]
RE:03418 マクロ作ってみたんですがNo.03419
cuma さん 01/05/31 14:25
 
間違いました

>ここでDLL関数エラー1が出ます。

エラー0でした。
以下は話として合っています。単に番号の記述ミスです。

>つまりSelectFolderの行でエラーのようなのですが、
>指定したアカウントもフォルダも何度見てもあってます。
>ここでエラーになる要因はほかにどんな理由が考えられるでしょうか?

[ ]
RE:03418 マクロ作ってみたんですがNo.03420
ポン太 さん 01/05/31 14:53
 
cuma さん、こんにちは。ポン太 です。


>if( !dllfunc("SelectFolder","hi-ho", "受信\見積\共同携帯\控え") )

SelectFolder のヘルプを良く読んでみましょう。
「マクロの中で固定の文字列で指定する場合は、"受信\\テスト"のように指定し
ます。」
とあります。つまり
if( !dllfunc("SelectFolder","hi-ho", "受信\\見積\\共同携帯\\控え") )
ですね。
C に慣れてない人は見落としやすいですよね。私もです。


2001/05/31(木) 14:41 ポン太

[ ]
RE:03418 マクロ作ってみたんですがNo.03422
秀まるお さん 01/05/31 15:24
 
> if( !dllfunc("SelectFolder","hi-ho", "受信\見積\共同携帯\控え") )

 マクロの中の文字列定数で、「\」を書く場合は、\\と書かないとダメです。

  if( !dllfunc("SelectFolder","hi-ho", "受信\\見積\\共同携帯\\控え") )

 とすればたぶん大丈夫だと思います。

 (他の部分は見てないので、まだ他にバグがあるかもしれませんけど)

[ ]
RE:03408 自動で転送させたいですNo.03423
秀まるお さん 01/05/31 15:24
 
> 出きれば他のメーラーでサポートされている今回のような機能は
> 標準マクロ?として公開されていると助かるなあと思いました。

 一応、「振り分け」の一機能としてそういうこと(自動転送)もサポートす
る予定です。(まだ全然手付けてませんけど)

[ ]
RE:03423 自動で転送させたいですNo.03425
cuma さん 01/05/31 16:43
 
計画にあるようで安心しました。
マクロで何でも出来ると言われても、マクロが書けない私には当面不安でした。
とりあえず今回の件は皆様に教えていただきながら何とかしたいと
思っています。

[ ]
RE:03422 マクロ作ってみたんですがNo.03426
cuma さん 01/05/31 16:46
 
ポン太さん 秀まるおさん
アドバイスありがとうございます。
早速修正しましたが、まだ何か問題があるようです。
何が問題なのか?突き止めきれてませんが、目的の自動転送に
至らないようです。

もうすこし実験してからまた書き直します。

[ ]
RE:03419 マクロ作ってみたんですがNo.03427
ひろ さん 01/05/31 16:58
 
 cuma さん今日は、ひろです。
 秀まるおさんや、ポン太さんの仰る通りです。投稿時にフォルダ名を元記
事からコピー&ペーストしたまま、書き直すことを忘れていました(^^;。
 鶴亀 (というか秀丸) のマクロでは、「\」自身を表すには「\\」と書く
必要があります。詳しくは秀丸ををダウンロードして、マクロヘルプを参照
してください。
 なお同様の理由で、
> dllfuncstr( "CurrentFolder" ) != "受信\見積\共同携帯\控え" )break;

dllfuncstr( "CurrentFolder" ) != "受信\\見積\\共同携帯\\控え" )break;
と書き直す必要があります。

[ ]
RE:03427 マクロ作ってみたんですがNo.03428
cuma さん 01/05/31 17:08
 
ひろさん、秀まるおさん、ポン太さん、ありがとうございます。

今ここも修正しました。

しかし、今度は新たな問題が出てしまいました。
「マクロエラー:文字列が指定されるべきところで数値が指定されています」
と言うエラーです。

行番号も出てないようです。

ただし、エラーが出る時点で、転送すべきメールの画面が出ています。
きちんとTo:は指定されていて、後は送信ボタンを押すだけの状態まで
マクロが実行されているようです。

文字列をいれるべき所で、数値が指定されていると言うエラーからどこか
わかるでしょうか?

[ ]
RE:03428 マクロ作ってみたんですがNo.03430
cuma さん 01/05/31 17:37
 
色々実験してますが、いまだ成功しません。
何とか特定フォルダメールを無事に転送したいです。

一応、色々やった後の現在の私のマクロファイルを以下に貼り付けます。
何かやってしまっていた場合、文字だけの質問では駄目だと気になった
のでした。

loaddll "tkinfo.dll";
if( !dllfunc("SelectFolder","hi-ho", "受信\\見積\\共同携帯\\控え") )
  goto DllError;
while( dllfunc("SelectRecvMail") ) {
  if( dllfuncstr( "CurrentAccount" ) != "hi-ho" )
    goto BREAK_HIHO;
  if( dllfuncstr( "CurrentFolder" ) != "受信\\見積\\共同携帯\\控え" )
    goto BREAK_FOL;

  if( !dllfunc("MakeForward") )goto DllError;
  $tmp = dllfunc("SetHeader", "To", "xxxx@vanilla.freemail.ne.jp" );
  message "成功";
  if( !dllfunc("SendLater") )goto DllError;
  #handle = hidemaruhandle(0);
  if( !dllfunc("SetMainWndTop") )goto DllError;
  closehidemaru #handle;
}

BREAK_HIHO:
  message "アカウント?";
goto End;

BREAK_FOL:
  message "フォルダ?";
goto End;

DllError:
  message "DLL 関数エラー";
End:
  freedll;
  endmacro;

[ ]
RE:03430 マクロ作ってみたんですがNo.03431
ひろ さん 01/05/31 18:12
 
 cuma さん今日は、ひろです。
> 「マクロエラー:文字列が指定されるべきところで数値が指定されています」
> と言うエラーです。
>
> 行番号も出てないようです。
 このタイプのエラーは、行番号がでないんですよね(;_;)。

 度書の時点で写し間違えていましたm(_|_)m。
>   $tmp = dllfunc("SetHeader", "To", "xxxx@vanilla.freemail.ne.jp" );
は、
$tmp = dllfuncstr("SetHeader", "To", "xxxx@vanilla.freemail.ne.jp" );
とすべきでした。

[ ]
RE:03431 マクロ作ってみたんですがNo.03432
cuma さん 01/05/31 18:36
 
ひろさんへ

ありがとうございます。お蔭様で今日中に転送マクロが機能するように
なりました。

秀丸エディタと鶴亀の組み合わせは無限の可能性があるようですが
まだまだ私には敷居が高すぎてB2から乗り換えてよかったのか?
考える事もありました。(既に登録は済んでます)

でも ひろさん、秀まるおさん、ポン太さん、tatutoさん のお陰で
B2より自分には使いよいメーラーとなりそうです。
自分のやりたい環境にするまでの手間はB2より、あるのですが
先輩方の援助のお陰できっと素晴らしいメール環境が出来そうな気が
しています。

これからも宜しくお願い致します。

[ ]
RE:03432 マクロ動いたイメージを載せましたNo.03433
cuma さん 01/05/31 18:40
 
折角なので、皆様のお陰で動作確認出来た「転送用マクロ」を
ここに転機しました。
私みたいにマクロ知らないで鶴亀に飛び込んだ人の参考になるかも
しれませんし。

loaddll "tkinfo.dll";
if( !dllfunc("SelectFolder","hi-ho", "受信\\見積\\共同携帯\\控え") )
  goto DllError;
while( dllfunc("SelectRecvMail") ) {
  if( dllfuncstr( "CurrentAccount" ) != "hi-ho" )
    break;
  if( dllfuncstr( "CurrentFolder" ) != "受信\\見積\\共同携帯\\控え" )
    break;
  if( !dllfunc("MakeForward") )goto DllError;
  $tmp = dllfuncstr("SetHeader", "To", "転送したいアドレス" );
  message "成功";
  if( !dllfunc("SendLater") )goto DllError;
  #handle = hidemaruhandle(0);
  if( !dllfunc("SetMainWndTop") )goto DllError;
  closehidemaru #handle;
}
goto End;
DllError:
  message "DLL 関数エラー";
End:
  freedll;
  endmacro;

[ ]