[ 新規に投稿する ]

送信メールの保存方法と場所No.00602
こさく さん 23/03/13 10:53 [ コメントを投稿する ]
  大変お世話になっております。こさくと申します。

早速ですが、教えて下さい。

編集中の送信メールを任意のフォルダに保存したいのです。

SaveDraft, SaveDraft2, SetTargetDraftFolder関数やSetInfoItemFolder関数を
使用すれば任意に保存できますがToヘッダが「@.item」で終わるという必要があ
ります。
この『Toヘッダが「@.item」で終わる』という制限がない保存関数はない様です。

Outlookでしかアクセス出来ないアカウントで実際の送受信以外の全てを秀丸
メールで行いたいからです。

具体的には、受信は受信したようにインポートして管理、送信は秀丸メールで宛
先など全て編集して各項目をOutlookの送信エディタ(というか判りませんが)に
コピペして送信します。
その後残った秀丸メールの送信メールを保存したいのですが現状だと草稿フォル
ダにしか保存できません。
これを内容の変更無しで任意のフォルダ(X-RootFolder等)に保存したいのです。
今は、手作業で草稿フォルダから任意のフォルダへ移動しています。

実際に送信していないのに送信済みの様に扱うというメーラとして矛盾すること
は認識しておりますが何卒よろしくお願いします。
因みに秀丸メールでは実際の送受信をしないアカウントなので設定はいかように
も変更可能です。

以上よろしくお願いします。
[ ]
RE:00602 送信メールの保存方法と場所No.00603
秀まるお さん 23/03/13 15:37 [ コメントを投稿する ]
   無理矢理ですが、新規メールを作成した後に、

    loaddll "tkinfo.dll";
    #n = dllfunc("SetInfoItemFolder", "受信");
    $to = dllfuncstr("CurrentHeader", "To");
    #n = dllfunc("SetHeader", "To", "@.item");
    #n = dllfunc("SaveDraft");
    #n = dllfunc("SetHeader", "To", $to);
    #n = dllfunc("SetMailFlag", "send", 0);
    #n = dllfunc("AlterSave");

 のようなマクロにて受信系メールを生成することは出来ました。ただ、そのメールのファイルメニューに出てくる「草稿に保存」で保存したメールが更新できるかというとそれは無理みたいでした。保存は、

    loaddll "tkinfo.dll";
    #n = dllfunc("AlterSave");

 のようにAlterSave関数呼び出しをやらないとダメでした。それか、一回エディタ・ウィンドウを閉じてまた開くってやるか。

 その辺の作戦にするか、またはどこかに一時ファイルとして保存してからImport関数でインポートさせるかになりそうな気がします。

 そんなのでどうでしょうか。

 上記の一時的に情報アイテム化して保存したのを受信メール化した後に「ファイル」メニューが送信系メールのままになってしまうのは、がんばれば直せるかなぁと思います。必要ならその辺の対応はしてもいいです。
[ ]
RE:00603 送信メールの保存方法と場所No.00604
こさく さん 23/03/13 17:08 [ コメントを投稿する ]
  検討ありがとうございます。こさくです。

なにやらかなり複雑な手順が必要そうで申し訳ありません。

> 上記の一時的に情報アイテム化して保存したのを受信メール化した後に「ファイ
>ル」メニューが送信系メールのままになってしまうのは、がんばれば直せるかなぁと
>思います。必要ならその辺の対応はしてもいいです。
これを実際の手順にすると・・

新規(返信)メール作成
 宛先、本文などを編集
マクロ実行
 草稿に保存(または一時的に情報アイテムとして保存)
 受信メール化
 Import関数でインポート
 受信メールから送信メール化?
 X-RootFolderヘッダに示されるフォルダに保存

こんな感じでしょうか?
送信実行の代わりに「マクロ」を実行してあたかも送信したかのようにフォルダ
に保存される。

手作業で実施している
草稿に保存
保存先からX-RootFolderのフォルダへ移動(この時宛先は実アドレスのままで
xxx@.itemが追加されるのは構いません)
と言う手順が自動化されれば完璧です。

>必要ならその辺の対応はしてもいいです。
もしも作成して頂けるなら大変嬉しいです。
[ ]
RE:00604 送信メールの保存方法と場所No.00605
秀まるお さん 23/03/14 08:44 [ コメントを投稿する ]
   ちょっと話がずれてしまった気がするのですが、とりあえず、草稿フォルダ以外の任意の場所にメールを生成することをマクロで実現することは、一応できる、ということはお返事しました。それではダメなのやら?

 あと、僕の方で対応してもいいというのは、あくまでそのマクロを使った時の話でして、そのマクロを実行した後に残ったエディタ・ウィンドウ上で「草稿に保存」を実行してもうまく動かない(保存したメールが更新されない)のは直してもいいという話です。

 どっちみち秀丸メールに手を加えないといけないなら、例えば具体的にマクロの関数として「任意の場所にメールを生成する」みたいなのを用意して欲しいとかでしたら、そういう対応をしてもいいですが、そうしましょうか。

 何かもうちょっと具体的に書いてもらわないと、果たしてどうして欲しいのか分からず、適当に対応するというのは困難な話になります。
[ ]
RE:00605 送信メールの保存方法と場所No.00606
こさく さん 23/03/14 09:39 [ コメントを投稿する ]
  お手数お掛けします。こさくです。

昨日書いていて少し解釈を間違っているかもしれないと思いながらでもこ言う事
かな?と送りましたがやはり私の解釈が間違っていたようです。
メールの"生成"と"保存"で私の認識がずれていたみたいです。
申し訳ありません。

>ことはお返事しました。それではダメなのやら?
これで大丈夫でした。ただ欲を言えば送信済みメール(亀アイコン)になると嬉し
いです。

>果たしてどうして欲しいのか分からず、
現状手作業している以下の動作がマクロ(一関数か組合せか問わず)で出来ると幸
せです。
・草稿フォルダに保存
・草稿フォルダからX-RootFolderのフォルダへ移動
 (マクロの場合はX-RootFolderじゃなく任意のフォルダ)
 (そして当然ですが、草稿フォルダを経由する必要はありません)

>「任意の場所にメールを生成する」
この関数で保存後のフォルダでは亀アイコンになるのが理想です。

>適当に対応するというのは困難な話になります。
何処までどういう風に要望を出して良いのか分からずお手間を取らせていまいま
した。
今後は、先ず「〜〜するには?」出来なければ直球で「〜〜機能が欲しい」と言
った形で投稿します。

以上よろしくお願いします。
[ ]
RE:00605 送信メールの保存方法と場所No.00607
こさく さん 23/03/15 10:53 [ コメントを投稿する ]
  お世話になります。こさくです

本スレッドで最初に秀まるお様が返信してくださったマクロのSetMailFlag のパ
ラメータをsend からsent に替えることで所望していた動作が出来ました。
(亀アイコンになり、返信の場合はスレッドも繋がる)

私の判りにくい文章にお付き合いくださり、色々どうもありがとうございました。
[ ]
RE:00607 送信メールの保存方法と場所No.00608
秀まるお さん 23/03/15 12:02 [ コメントを投稿する ]
   お返事が遅れてる間に解決できたということなので、とりあえず良しとさせていただきます。

 SetMailFlagした後の「草稿に保存」がうまく出来ない件についてはどっちにしても調査して、簡単に直せそうなら直そうと思います。
[ ]
RE:00608 送信メールの保存方法と場所No.00609
秀まるお さん 23/03/15 15:47 [ コメントを投稿する ]
   今さらですが、SetInfoItemFolder呼び出しのパラメータが間違ってました。

    #n = dllfunc("SetInfoItemFolder", "受信");

 ではうまく動かず、

    #n = dllfunc("SetInfoItemFolder","","受信");

 のように、第1パラメータにアカウント名として""を指定するなどしないとダメでした。失礼しました。
[ ]
RE:00609 送信メールの保存方法と場所No.00610
秀まるお さん 23/03/15 15:50 [ コメントを投稿する ]
   SetHeaderする順序とかもダメでした。うまく動いたサンプル掲載しときます。
 (独り言ですが)

    loaddll "tkinfo.dll";
    $to = dllfuncstr("CurrentHeader", "To");
    #n = dllfunc("SetHeader", "To", "@.item");
    #n = dllfunc("SetInfoItemFolder", "", "受信");
    #n = dllfunc("SaveDraft");
    #n = dllfunc("SetHeader", "To", $to);
    #n = dllfunc("SetMailFlag", "send", 0);
    #n = dllfunc("AlterSave");
[ ]
RE:00610 送信メールの保存方法と場所No.00611
こさく さん 23/03/15 16:23 [ コメントを投稿する ]
  どうもありがとうございます。こさくです。

独り言なんてとんでもない。わざわざ済みません。
折角検証していただいたのですが、私の環境では最初に頂いたマクロが正常に動
作します。

新しい方ですと、カレントアカウントの"受信"フォルダに保存されました。
00603 に書かれた内容だと、カレントアカウントの送信エディタ起動フォルダ(X
-RootFolder:)に保存されます。

なお、先ほどの書きましたがどちらのマクロも
 #n = dllfunc("SetMailFlag", "send", 0);

 #n = dllfunc("SetMailFlag", "sent", 0);
と変更しました。

以上よろしくお願いします。
[ ]
RE:00607 送信メールの保存方法と場所No.00612
こさく さん 23/03/16 10:17 [ コメントを投稿する ]
  お世話になっております。こさくです。

>(亀アイコンになり、返信の場合はスレッドも繋がる)
亀アイコンにはなりますが、スレッドは繋がりませんでした。
何か勘違いしていたようです。
ただしインポートしたメールそのものは、繋がっています。

インポートメールへの返信操作でスレッドが繋がるようにするには、どうすれば
良いでしょうか?

因みに「Re:で始まるメールを無理矢理連結する」はチェックしています。
その下の「範囲を最大限」のチェックはどちらも試しましたが繋がりませんでし
た。

「受信したようにインポートする」際に何か操作が必要か、インポートしたメー
ルに返信操作した際に何か必要になるでしょうか?

以上よろしくお願いします。
[ ]
RE:00612 送信メールの保存方法と場所No.00613
秀まるお さん 23/03/16 13:56 [ コメントを投稿する ]
   スレッドがつながるかどうかは、ヘッダで決まります。

    Message-Id: <id1>

 みたいなメールにつなげるなら、

    In-Reply-To: <id1>
    References:  <id1>

 みたいなヘッダがあればいいです。In-Reply-To:かReferences:かどっちかあればいいですが、普通は両方付けます。

 「返信メール」コマンドでメールを作成すれば、そのヘッダは勝手に付くはずになります。マクロで意図してやりたい場合は、

     $rootId = dllfuncstr("RootHeader", "Message-Id");
     #n = dllfunc("SetHeader", "In-Reply-To", $rootId);
     #n = dllfunc("SetHeader", "References", $rootId);

 みたいになります。
[ ]
RE:00613 送信メールの保存方法と場所No.00614
こさく さん 23/03/16 14:49 [ コメントを投稿する ]
  返信ありがとうございます。こさくです。

> みたいなヘッダがあればいいです。In-Reply-To:かReferences:かどっちかあればい
>いですが、普通は両方付けます。
私もそう思ってインポート済みのヘッダーを確認しましたがどちらもありません
でした。
返信メールコマンド時に自動起動マクロで山紫水明氏作の「TKSetRootHeader.
mac」を起動していたのでこれをなしにしてみましたが繋がりませんでした。

因みにOutlookからエクスポートしたemlファイルにも上記ヘッダはありませんで
した。

上記のヘッダがありませんので頂いたマクロを追加しても当然繋がらないことに
なります。実際やってみましたが、どっちのヘッダも空で出来上がりました。

これらのヘッダがなければどうにもなりませんね。
エクスポート直後のemlにもヘッダはありませんでした。ツールの不具合なのか
も知れません。
[ ]
RE:00614 送信メールの保存方法と場所No.00615
秀まるお さん 23/03/16 15:57 [ コメントを投稿する ]
   具体的なメール内容は僕は分からないのでなんですが、返信メールコマンドでメールを作成してもReferences:やIn-Reply-To:ヘッダが生成されないことがあるとしたら、返信元メールにそもそもMessage-Id:ヘッダが無いんじゃないかと思います。
[ ]
RE:00615 送信メールの保存方法と場所No.00616
こさく さん 23/03/16 16:39 [ コメントを投稿する ]
  お付き合いありがとうございます。こさくです。

Outlookで受信したメールをOutlookプロパティで確認しました。
元のメールには、
Message-ID:
References:
In-Reply-To:
とも存在していました。これを「Outlook Export Tool」でエクスポートすると
きに"主要な情報のみエクスポートします。"と出て上記ヘッダは対象になってい
ないようでした。
そしてこの対象の変更は出来ないようです。

繋げるためのデータが無ければどうしようもありません。
お騒がせ&お手数お掛けしました。
[ ]

[ 新規に投稿する ]