未送信メールのアカウントをまたがった移No.42898
leo さん 12/06/27 16:00
 
使い始めたばかりの初心者ですが、ファイルメーカからmapiを利用して
メール送信したいと考えておりますが、アドレス(アカウント)を複数利用している
ため、以下の作業がそれぞれのメールに対して発生してます。


1)アカウントの切替
(デフォルトのままで問題のあるものは、デフォルトの未送信から、希望するアカウ
ントの未送信へメールを移動させる。)

2)ヘッダ:fromの変更
エディタでヘッダ:fromをアカウントに対応したメールアドレスに変更


一番の要望としては、ccのアドレスを参照して、mapiでデータ受取時に、
自動的にそれぞれのアカウントの未送信に移動するしくみですが、

難しい場合は、未送信メールのアカウントをまたがった移動をした場合、アカウント
に応じたヘッダ:fromに変更する仕組みを希望してます。

そのような機能は実装されてますでしょうか。



適当と思われるやり方があれば、どなたかご教授いただけますでしょうか。
お手数おかけしますが、なにとぞよろしくお願いいたします。

[ ]
RE:42898 未送信メールのアカウントをまたNo.42899
秀まるお2 さん 12/06/27 17:43
 
 「マクロ・マクロ登録...」の「自動起動」ページにある「あとで送信/今すぐ
送信時」の所にマクロを登録しておいて、そのマクロでアカウントの切り替えや
From:の書き換えなどをすればいいんじゃないかと思います。

 MAPI経由で新規メールが作成されて、それを「あとで送信」と操作されてるん
じゃないかと思いますが、もしそうだとしたら、自動起動マクロの作戦でうまく
いくと思います。

 マクロの例としては、Cc:ヘッダの内容でアカウント+From:を書き換えるとい
うことで、例えば、

    loaddll "tkinfo.dll";
    $cc = dllfuncstr("CurrentHeader", "cc");
    if( $cc == "hoge1@hoge.com" ) {
        #n = dllfunc("SetEditorAccount2", "マイアカウント1", 0);
    } else if( $cc == "hoge2@hoge.com" ) {
        #n = dllfunc("SetEditorAccount2", "マイアカウント2", 0);
    } else {
        //アカウント切り替えなし
    }

 みたいな感じのマクロでアカウント+From:を切り替えたらいいんじゃないか
と思います。

[ ]
RE:42899 未送信メールのアカウントをまたNo.42908
leo さん 12/06/29 17:22
 
秀まるお2さま、早速のご回答ありがとうございます。
サンプルを元にマクロを組んでみたのですが、うまく動作しませんでした。

思い切ってシンプルな形でテストをしましたが、
SetEditorAccount2が働いてないようで、アカウントの切り替えと
fromの書き換えが動作してないようです。

------------------------------------------
loaddll "tkinfo.dll";
 $account2 = dllfuncstr( "Account" , 2 );
 #n = dllfunc("SetEditorAccount2", $account2, 0);
------------------------------------------

何か原因がわかれば、ご教授いただきたいのですが。
お手数おかけしますが、よろしくお願いいたします。

[ ]
RE:42908 未送信メールのアカウントをまたNo.42909
秀まるお2 さん 12/06/29 17:51
 
 実はこちらでMAPIを使って送信のテストが出来てませんで、検証が不十分なま
まお返事してしまってました。

 という今もまだ検証出来てないのですけども…。


 たぶんマクロが起動されてないのだと思うので、一度、マクロの中身を

      message "マクロ起動されました。";

 の1行だけにしてテストしてみてほしいです。それでメッセージが出てこない
としたら、マクロが起動すらされてないことになります。

 もしメッセージが出てこないとしたら、例えば普通に「新規メール」でメール
を作成して送信した場合はどうかも試してみてほしいです。

 それでうまくメッセージが出てくるとしたら、MAPI経由で送信しようとした場
合にはマクロが実行されないってことになりまして…。その場合は秀丸メール側
を改良しないとダメだと思います。

 それか、「全般的な設定・上級者向け・MAPI(Palm連携用)」の「送信要求され
たメールの処理方法」が「新規メール」だったら、とりあえず「今すぐ送信」と
かをご自身で手作業で実行されるはずなので、それでうまくマクロ起動してくれ
るのかなぁという気がしますけども、それはダメでしょうか。




 こちらでもちゃんと検証したい所ですが、MAPI経由で送信を指示するようなソ
フトが手元に無くて、ちょっとテストが出来ないです。何かそういうフリーソフ
トを探す所から始めないといけないです。

[ ]
RE:42909 未送信メールのアカウントをまたNo.42910
秀まるお2 さん 12/06/29 17:59
 
 ちょっと文章がおかしくなってる所がありましたので是正させていただきます。

>  それか、「全般的な設定・上級者向け・MAPI(Palm連携用)」の「送信要求され
> たメールの処理方法」が「新規メール」だったら、とりあえず「今すぐ送信」と
> かをご自身で手作業で実行されるはずなので、それでうまくマクロ起動してくれ
> るのかなぁという気がしますけども、それはダメでしょうか。

 「全般的な設定・上級者向け・MAPI(Palm連携用)」の「送信要求されたメール
の処理方法」の所が、今現在もしも「今すぐ送信」か、または「あとで送信」に
なってるのであれば、そこを「新規メール」に設定していただくことで、マクロ
実行が可能になってくれるかなぁと思います。

 もしその作戦が可能ならそれでお願いしたいです。

 無理そうでしたら、やはりちゃんとマクロが起動するように秀丸メールを直さ
ないといけないかと思います。

 (今まだ検証出来てないのですけども)

[ ]
RE:42910 未送信メールのアカウントをまたNo.42915
leo さん 12/06/30 19:23
 
秀まるおさま

たびたびのご回答ありがとうございます!

以下のようにmessage関数を使用して、みたところ、
マクロ起動のダイアログは表示されませんでした。

------------------------------------------
message "マクロ起動";
loaddll "tkinfo.dll";
 $account2 = dllfuncstr( "Account" , 2 );
 #n = dllfunc("SetEditorAccount2", $account2, 0);
------------------------------------------


新規メール作成で試してみたところ、
メール保存時に「未送信フォルダに保存」を選択すると、
マクロが起動したようで、
message関数の値「マクロ起動」のダイアログが表示されました。

が、その後、エラーダイアログ
「TKINFO.DLL:エディタ上で実行できないTKInfo.dll呼び出しが行われました。関数
コード=5」
が表示され、その後、未送信メールを送信してもアカウントの切替はなされませんで
した。



やり方が適切かどうかはわかりませんが、
念のため、メール一覧の状態で、未送信メールを選択し、マクロ起動を選んだ場合、
message関数は働いて、その後のSetEditor関数のみが、動作してないような状況です。



そもそも根本的なところでミスをしているような気はしますが、
見当がつかないため、再度ご確認いただければと存じます。



ちなみに(というか最初で報告すべきでしたが)
スペックは以下のとおりです。

***********************************
OS:windows 7 proffesional SP1(32bit)
CPU:Intel Core Duo 3.06GHz(E7600)
RAM:2GB
秀丸エディタバージョン:8.13
秀丸メールバージョン:5.75
***********************************



お手数おかけしますが、なにとぞよろしくお願いいたします。

[ ]
RE:42915 未送信メールのアカウントをまたNo.42916
秀まるお2 さん 12/06/30 23:35
 
 こちらでもMAPI経由でメールを送信するテストをしてみたんですが、MAPI経由
でメールの送信を指示した場合でも、「マクロ・マクロ登録・自動起動・あとで
送信/今すぐ送信時」に登録したマクロは自動起動されるようでした。

 なので、なぜうまくいかないのか、今のところちょっと分かりません。

 とりあえず、手動で「あとで送信」または「今すぐ送信」を実行した場合は、
たとえそのメールがMAPI経由で起動したものだとしてもマクロがうまく起動する
はずだと思うのですが、それだけ一回テストしてもらえないでしょうか。つまり、

 「全般的な設定・上級者向け・MAPI(Palm連携用)」

 の中にある

 「送信要求されたメールの処理方法」

 を、

 「新規メール」

 にして、それでテストしてみる形になります。それでMAPI経由で新規メールが
起動されたあとに、「ファイル・あとで送信」を実行してみて、それでマクロが
自動起動するかどうか確認してみてほしいです。

 それでもマクロが起動しないってことは、ちょっと僕的にはありえないはずな
んですけども、どうでしょうか。

 もしダメだとしたら、「全般的な設定・上級者向け・動作の記録」の「秀丸
メールの動作をdump.txtに記録する」をONにしていただきまして、MAPI経由で新
規メールを作成して「あとで送信」と、一連の操作をして、それによって出力さ
れるdump.txtの内容を僕に送っていただくことで、何か解決のヒントが見つかる
かもしれません。もし可能でしたらそれもお願いしたいです。

> が、その後、エラーダイアログ
> 「TKINFO.DLL:エディタ上で実行できないTKInfo.dll呼び出しが行われました。関数
> コード=5」
> が表示され、その後、未送信メールを送信してもアカウントの切替はなされませんで
> した。

 これは、マクロの中身に問題があります。マクロの中で、

   $account2 = dllfuncstr( "Account" , 2 );

 としてますが、Account関数は秀丸メール本体ウィンドウ上でしか実行出来な
い関数なので、エラーが出ます。

 エディタの現在のアカウントを取得するなら、

   $account2 = dllfuncstr("CurrentAccount");

 とする形になります。それか、秀丸メール本体上での上から3番目のアカウン
トを取得したいってことでしたら、

   $account2 = dllfuncstr("ExecAtMain", "Account", 2 );

 って書いていただく方法もあります。

 それと、もう1点お願いがありました。秀丸メールは最新のβ版の方をインス
トールしてほしいです。最新βの方がバグが少ないし、dump.txtの出力の方も充
実してて、僕の方で見直すのに便利です。


 それと、dump.txtは、秀丸メールが動作中はどんどんデータが書き込まれてい
ってサイズがとんでもないことになるので、送っていただくのは、あくまで
「MAPI経由で新規メールを作成してあとで送信コマンドを実行した所まで」を、
適当に切り抜いて送ってほしいです。

 送り先は、"maruo@mitene.or.jp"になります。

[ ]
RE:42916 未送信メールのアカウントをまたNo.42918
leo さん 12/07/02 13:26
 
秀まるお様

先ほど、メールにてdump.txtをお送りいたしました。
件名は「秀丸メールサポート会議】未送信メールのアカウントをまたがった移動での
from情報の変更 についてです。」となります。




秀丸メール最新ベータ版をインストールして、
mapiから新規メールの設定にして、送信する一連の作業のdump.txtをお送りします。
ご確認いただけますでしょうか。


結果といたしまして、最新ベータ版にすることで、
・mapi→新規メールの方は、マクロ(アカウント切替)→送信が可能になりました。
・mapi→あとで送信の場合は、マクロそのものが動作せず、通常送信となります。



メールを数十件、一度に送ることもあるため、
可能であれば、mapiの設定を「今すぐ送信」「あとで送信」にしても
アカウント切替のマクロが動作するようにしていただけると助かります。


内容に不備などございましたら、ご指摘いただけますでしょうか。




お手数おかけしますが、ご確認の程よろしくお願い致します。

[ ]
RE:42918 未送信メールのアカウントをまたNo.42919
秀まるお2 さん 12/07/02 13:48
 
 MAPIでの送信の設定が「あとで送信」だとマクロ実行されないということで…。
「新規メール」の場合(+手作業であとで送信)ならうまくマクロ実行されてる
ってことなので、これは秀丸メールのバグかと思います。

 もっと詳しく調べてなんとか原因究明&修正します。少々お待ちください。

[ ]
RE:42919 未送信メールのアカウントをまたNo.42920
秀まるお2 さん 12/07/03 00:09
 
 再現テストしてみて、たしかにテストしていただいた通り、MAPIでの送信を
「あとで送信」または「今すぐ送信」の場合はマクロが自動起動されませんでし
た。

 大変失礼しました。

 さらに詳しく調べてみた所、「あとで送信」または「今すぐ送信」と指示した
場合は、内部的な都合もあって、マクロを自動起動するような仕組みにはちょっ
と出来ないようでした。それで、1つオプション追加というか、MAPI送信の時専
用の、自動起動のマクロを指定するオプションを追加します。

 ただし、そのマクロの自動起動が指示出来るのは、MAPI送信の指定が「新規
メール」の場合に限る動作としか出来ないです。それで、実際の送信の処理は、
その自動起動される側のマクロでやっていただく形にすればいいです。

 とりあえずオプション追加は次のβ版でやるとして、マクロの内容としては、
例えば、

    loaddll "tkinfo.dll";
    $account2 = dllfuncstr("ExecAtMain", "Account", 2 );
    #n = dllfunc("SetEditorAccount2", $account2, 0);

    //あとで送信の処理
    #n = dllfunc("SendLater");
    if( #n != 0 ) {
        exit;
    }

 のように書いていただきますと、アカウントを切り替えて、即「あとで送信」
となって、結果、メール内容が未送信フォルダに入るって手はずになります。

 とりあえずそういう作戦で、次のβ版を、今日(7月3日)にでもアップロー
ドさせていただきます。

 少々お待ちください。

[ ]
RE:42920 未送信メールのアカウントをまたNo.42921
秀まるお2 さん 12/07/03 12:16
 
 先ほどV5.76β16として修正版をアップロードしました。

 これでお願いします。

 「全般的な設定・上級者向け・MAPI」の中に、自動起動するマクロを指定する
設定が追加されてます。

32bit版:
  http://hide.maruo.co.jp/software/bin/hmmail576b16_signed.exe

[ ]
RE:42921 未送信メールのアカウントをまたNo.42922
秀まるお2 さん 12/07/03 16:30
 
 今さらですが、1つ勘違いがありました。

 MAPIの設定ページでの「送信要求されたメールの処理方法」ですが、

 ●「今すぐ送信」を指示した場合…

   「あとで送信/今すぐ送信時」の自動起動マクロは自動実行される。

 ●「あとで送信」を指示した場合…

   「あとで送信/今すぐ送信時」の自動起動マクロは自動実行されない。

 ●「新規メール」を指示した場合…

   「あとで送信/今すぐ送信時」の自動起動マクロは、手作業で送信
   指示した段階で実行される。

 という仕組みになってるようでした。

 つまり、マクロが実行されなくて困るのは「あとで送信」を指示した場合だけ
でした。

 ヘルプの記載がちょっと間違ってるので、その点はまた修正させていただきま
す。

[ ]
RE:42922 未送信メールのアカウントをまたNo.42923
leo さん 12/07/03 18:03
 
秀まるお様

ご対応ありがとうございます。
最新版にて、希望する動作が実現いたしました!

秀まるお様のこまめなフォローと迅速な対応のおかけです。

これからも秀丸メール、大事に使わせて頂きます。
ほんとにありがとうございました!

[ ]