スレッド紐づけの件No.03834
na311 さん 18/08/26 22:29
 
お世話になります。

スレッド紐づけのご相談がありご確認をいただけないでしょうか。

【要望内容】
Aさんからメールが来たときに、そのメールをBさんに転送すれば
スレッドで紐づけされます。
要望としてはAさんからのメールの一部をコピペしてBさんに
「新規メール」、または「今までのやり取りの返信メール」をした際に
A,Bのメールのスレッドの紐づけをする方法は出来ないでしょうか。

転送メールにして、メールの内容を改造すれば良いのですが
それですと手間が多く、対応策があればご教示いただけると幸いです。

お忙しい中、申し訳ございませんが
よろしくお願い致します。

[ ]
RE:03834 スレッド紐づけの件No.03835
Iranoan さん 18/08/27 00:04
 
na311さん今日は、Iranoan です
> 要望としてはAさんからのメールの一部をコピペしてBさんに
> 「新規メール」、または「今までのやり取りの返信メール」をした際に
> A,Bのメールのスレッドの紐づけをする方法は出来ないでしょうか。
「自動で」は難しいですが、手動なら簡単です
1.一度普通に送信後、送信メールと紐付け先メールを同じフォルダに置く
2.纏めておいてあるフォルダでスレッド表示に
3.紐づけしたいメール (送信メール) を紐付け先のメール (通常受信メール) に D&D
ただ欠点としては、あくまでこれは手元で紐づけしただけで、自分が送信したメール
がその送信先で紐付けられるわけではありません

そこまでやるには、送信前に元となるメールの Message-ID ヘッダを調べ In-Reply-
To や Refferences ヘッダを編集する必要がります
これをやるなら、端から
> 転送メールにして、メールの内容を改造すれば良いのですが
> それですと手間が多く、対応策があればご教示いただけると幸いです。
をした方が早いです

[ ]
RE:03834 スレッド紐づけの件No.03836
na311 さん 18/08/27 08:20
 

すみません、追加なのですが
コピペでのスレッド紐付けに加えて
下記でも紐付け出来れば理想になります。

・Aさんから来たメールの添付ファイルを
 Bさんに送るとき

お手数ですが併せてご確認をいただけないでしょうか。

以上よろしくお願い致します。


>お世話になります。
> ......
>よろしくお願い致します。

[ ]
RE:03835 スレッド紐づけの件No.03837
na311 さん 18/08/27 08:22
 
Iranoan 様

ご丁寧にありがとうございます。
英数記号全角文字を半角にする、マクロ重宝させていただいております。


そのやり方は知らなかったです。
ご教示いただき、ありがとうございます。

ただ贅沢な悩みで恐縮ですが
自動でスレッドに紐づけできればと思っております。

やはりそれですと難しいでしょうか。

[ ]
RE:03837 スレッド紐づけの件No.03838
秀まるお2 さん 18/08/27 09:05
 
 転送メールの場合だと、テンプレートにてスレッドがつながるように指定可能です。

    $(AddHeader,References,$(RootHeader,Message-Id))$-

 って1行をテンプレートに入れればいいです。

 やり方の1例を紹介させていただきますと・・・

 1.「設定 - アカウント毎の設定...」を実行して「テンプレート/署名」ページ
   を選択する。

 2.転送メール用を「個別指定」にして、「編集...」ボタンを押す。

 3.「挿入▼」ボタンを押して出てくるメニューの、

     転送メール用 - ($AddHeader....   ) 転送元メールをスレッドに連結させる

   を選択してそれをテンプレートに追加する。追加する位置は先頭辺りがお勧め。

 4.OKボタンを押していって確定させる。

 です。

> ・Aさんから来たメールの添付ファイルを
>  Bさんに送るとき

 先ほどのテンプレート指定した上で、「転送メール」でエディタ・ウィンドウを立
ち上げて転送するか、または「返信メール」コマンドでエディタ・ウィンドウを立ち
上げた上で、Subject:やTo:を書き換えて転送するってことでもいいんじゃないかと
思います。

 コマンド1つでなんとかしたいってことでしたら、そういうテンプレートを指定し
た転送メールを実行する用のマクロを作る作戦も可能です。

 例えば、

    loaddll "tkinfo.dll";
    #n = dllfunc("MakeForward");
    #n = dllfunc("AddHeader", "References", dllfuncstr("RootHeader", "Messag
e-Id"));
    gofiletop;
    beginsel;
    gofileend;
    delete;

 のようなマクロにて、スレッド的につながりつつ添付ファイルを転送するような
メールが作成可能です。

[ ]
RE:03838 スレッド紐づけの件No.03852
na311 さん 18/08/28 23:54
 
ご連絡ありがとうございます。
下記のマクロでスレッドを繋げることは出来ました。

ただやはりコピペで自動に繋げることは
さすがに出来ない話でしょうか。  

例を挙げると

@【AさんからBさんへのメール】
日本の首都はどこですか?

A【BさんからCさんへのメール】
Aさんから日本の首都を聞かれました、教えてください。

B【CさんからBさんへのメール】
東京です。⇐コピー

C【BさんからAさんへのメール】
東京です。⇐ペースト

上記は転送メールではなくコピペで
@ACをスレッドで繋げられればと思っています。

ただ、どう考えても無理な気もしますので
不可能でしたら諦めますので言ってもらえればと思います。

上記のようなケースが多いため、
もし対応が出来ればと思い相談させていただきました。

長文申し訳ございません。




>
>    loaddll "tkinfo.dll";
>    #n = dllfunc("MakeForward");
>    #n = dllfunc("AddHeader", "References", dllfuncstr("RootHeader", "Messa
>ge-Id"));
>    gofiletop;
>    beginsel;
>    gofileend;
>    delete;
>
> のようなマクロにて、スレッド的につながりつつ添付ファイルを転送するような
>メールが作成可能です。

[ ]
RE:03852 スレッド紐づけの件No.03853
秀まるお2 さん 18/08/29 09:23
 
 コピペしたら自動でってのはさすがに無理ですが、しいて、コピペをした後に1ア
クションでなんとかするってことなら出来そうな気がします。

 たとえばコピーする時は秀丸メール本体ウィンドウ上でそのメールを選択して実行
するのだとしたらですが、マクロにて、秀丸メール本体ウィンドウ上で現在選択して
るメールのMessage-Idを取得して、それを今編集中のメールにReferences:でセット
するってマクロなら出来ます。

 マクロとしては、

    loaddll "tkinfo.dll";
    #editor = hidemaruhandle(0);
    #n = dllfunc("SetMainWndTop");
    $messageid = dllfuncstr("CurrentHeader", "Message-Id");
    setactivehidemaru #editor;
    #n = dllfunc("AddHeader", "References", $messageid);

 のようになります。

 そんな感じで1アクション入れて連結させるしかないように思います。

[ ]
RE:03853 スレッド紐づけの件No.03855
na311 さん 18/08/29 12:43
 
ご連絡ありがとうございます。
ワンアクションが入っても全然問題ございません。

>たとえばコピーする時は秀丸メール本体ウィンドウ上でそのメールを選>択して実行
>するのだとしたらですが

⇒はい、コピーは上記のタイミングで行います。

ご連絡いただきましたマクロを試してみたのですが
「上書き禁止のエディタ上でSetHeader系関数が呼ばれました」と出てしまいました。

添付ファイルの上書き禁止はデコードの設定の所にありましたが
受信メールの上書き禁止解除?はどこかで対応可能でしょうか。

お手数ですがご確認お願いします。

[ ]
RE:03855 スレッド紐づけの件No.03856
秀まるお2 さん 18/08/29 14:53
 
 僕が想定してたマクロ実行のタイミングが違うのやら?

 僕が思ってた状況を説明させていただくと、

 1.何かメールが届いたとする。仮にAとする。
 2.新規メールを作成する。これをBとする。
 3.Aメールに戻って(秀丸メール本体ウィンドウをアクティブにして)
   適当な文面をコピーし、Bメール上に貼り付ける。
 4.この状況でマクロ実行する。

 ということを考えてました。この場合、今開いてるBのメール(編集できるメー
ル)上で

        #n = dllfunc("AddHeader", "References", $messageid);

 って文が実行されるはずで、AddHeaderが失敗することはないはずだと思います。

 マクロの中で、一回秀丸メール本体ウィンドウをアクティブにして、その後、「se
tactivehidemaru #editor;」を実行することでエディタ・ウィンドウに戻るはずです
けども・・・。

 その辺どんなもんでしょ?

 たとえばマクロをデバッグ用に、以下のように直してみるとか・・・

    loaddll "tkinfo.dll";
    #editor = hidemaruhandle(0);
    message "メールを編集してる最中のエディタウィンドウ上でマクロ実行してる
はず";
    #n = dllfunc("SetMainWndTop");
    message "秀丸メール本体ウィンドウ上に切り替わってると思う";
    $messageid = dllfuncstr("CurrentHeader", "Message-Id");
    setactivehidemaru #editor;
    message "メールを編集してる最中のエディタウィンドウに戻ったはず";
    #n = dllfunc("AddHeader", "References", $messageid);

 みたいにメッセージ表示するようにしてみるとどうでしょ。

 1回秀丸メール本体ウィンドウがアクティブになってメッセージ表示されて、その
後、元のエディタ・ウィンドウに戻ってメッセージ表示されるはずですけども。

[ ]
RE:03856 スレッド紐づけの件No.03859
na311 さん 18/08/29 19:52
 
ご丁寧にご連絡ありがとうございます。

原因が解決しました。
大変申し訳無いのですが単純に私のミスで
マクロをエディタ側でなく、秀丸メール本体側に登録しておりました。

エディタ側での登録で理想通りのスレッドの繋がりができました。

すみません、あと2点教えていただきたいことがあり
ご確認をいただけないでしょうか。

@最後にアクティブにしたメールが記憶され、
 新規メールでマクロを実行すると、アクティブにしたメールが
 スレッドで繋がるのでしょうか。
 逆を言うと他のメールをアクティブにしない限り
 マクロを実行する前に他のフォルダ等をクリックしてもいいのでしょうか。(仕組
みだけ理解しておきたいと思いました)

A今回、新規メールに対してスレッドで繋がったのですが
 返信メールに対して繋げられるマクロの改造は可能でしょうか。

お忙しい中、申し訳ございませんが
よろしくお願い致します。
 

[ ]
RE:03859 スレッド紐づけの件No.03861
秀まるお2 さん 18/08/30 09:41
 
> @最後にアクティブにしたメールが記憶され、
>  新規メールでマクロを実行すると、アクティブにしたメールが
>  スレッドで繋がるのでしょうか。
>  逆を言うと他のメールをアクティブにしない限り
>  マクロを実行する前に他のフォルダ等をクリックしてもいいのでしょうか。(仕
>組みだけ理解しておきたいと思いました)

 マクロを実行する時点で、秀丸メール本体ウィンドウ側で選択してるメールにスレ
ッドがつながるようになります。

 マクロ実行の前にどんなメールを何回選択しても一切関係なく、とにかくマクロを
実行する瞬間にどのメールを選択してるかのみの問題になります。

 マクロがやってることは、

 1.秀丸メール本体ウィンドウをアクティブにする。
 2.その時点で選択されてるメールのMessage-Idを拾う。
 3.エディタ・ウィンドウに戻って、そこに先ほど取得したMessage-Idを、
   今編集中のメールにReferences:ヘッダとして追加する。

 ってだけです。

> A今回、新規メールに対してスレッドで繋がったのですが
>  返信メールに対して繋げられるマクロの改造は可能でしょうか。

 新規メールじゃなくても返信メールでも一応マクロは使えますけども、そもそも的
に、返信メールの場合は返信元メールにスレッドがつながるように、それ用のRefere
nces:ヘッダ(およびIn-Reply-To:ヘッダ)が最初からセットされてます。

 その「返信元につなげる」用のヘッダが残ったままだと、結局はそっちの方にスレ
ッドがつながる可能性が高いです。

 それをなんとかするとしたら、元々のReferences: / In-Reply-To:ヘッダを削除し
てから新しいReferences:ヘッダをつける必要がありまして・・・マクロとしては、


    loaddll "tkinfo.dll";
    #editor = hidemaruhandle(0);
    #n = dllfunc("SetMainWndTop");
    $messageid = dllfuncstr("CurrentHeader", "Message-Id");
    setactivehidemaru #editor;
    #n = dllfunc("DeleteHeaderUnited", "References");
    #n = dllfunc("DeleteHeaderUnited", "In-Reply-To");
    #n = dllfunc("AddHeader", "References", $messageid);

 ってな具合でいけます。

 新規メールの場合でも上記マクロで大丈夫です。

[ ]
RE:03861 スレッド紐づけの件No.03883
na311 さん 18/09/04 18:54
 
ご丁寧にありがとうございます。
はい、下記のご紹介いただいたマクロでやりたいことが出来ました。

返信でも必要としていた理由は

例えばAさんとB(私)のメールのやり取りで
Aさんからの質問でわからないときにCさんに問い合わせをして
そのCさんからの回答のメールとBからAさんへの返信メールをスレッドで
繋ぎたいケースがあるためでした。

ご対応助かりました。


>    loaddll "tkinfo.dll";
>    #editor = hidemaruhandle(0);
>    #n = dllfunc("SetMainWndTop");
>    $messageid = dllfuncstr("CurrentHeader", "Message-Id");
>    setactivehidemaru #editor;
>    #n = dllfunc("DeleteHeaderUnited", "References");
>    #n = dllfunc("DeleteHeaderUnited", "In-Reply-To");
>    #n = dllfunc("AddHeader", "References", $messageid);
>
> ってな具合でいけます。
>
> 新規メールの場合でも上記マクロで大丈夫です。

[ ]