送信済みメールを自動でIMAPサーバーにアNo.47381
m3snow さん 15/01/19 18:17
 
いつも秀丸メールを愛用させていただいています。

秀丸メールからGmailのSMTPに送信したメールは、
自動的にGmailの送信済みメールに保存してくれます。
このため、他のモバイル環境でもGmailに接続すれは、
送信済みメールも確認できます。

これと同じようなことを、Gmail以外のIMAPサーバでも行いたいです。
V6.26で追加された「IMAPサーバーにアップロード」を使えば、
手動ではできるのですが、自動する方法を考えています。

現状、IMAPサーバーにアップロード機能にマクロはないですよね。
マクロがあっても、送信後の自動起動マクロがなかったのでマクロでは難しい。

Bccで自分宛に送付する方法もありますが、メール受信で同じメールが
受信されてしまうし、IMAPサーバ側も受信フォルダになるので管理が煩雑。
IMAP4的に同期を使うと、IMAPサーバにない過去の大量メールの扱いが...
など、なかなか良い案が見つかりません。

何か、良い方法はないでしょうか。

例えば、送信したメールの振り分け設定(高度な動作の設定)で、
フォルダへコピー(これはローカルのフォルダに複写)のように、
「IMAPサーバーにアップロード」みたいな機能があれば、
うれしいです。

よろしくお願いします。

[ ]
RE:47381 送信済みメールを自動でIMAPサーNo.47388
秀まるお2 さん 15/01/20 10:30
 
 送信済みメールと、あと最近要望があったのが草稿フォルダのメールについて、
メールサーバーと同期させたいというのがあります。今のところ出来ないですけ
ども…。

 で、そういう同期機能を作る上で、まずはアップロード機能を作ってみた所で
ありました。

> 何か、良い方法はないでしょうか。
>
> 例えば、送信したメールの振り分け設定(高度な動作の設定)で、
> フォルダへコピー(これはローカルのフォルダに複写)のように、
> 「IMAPサーバーにアップロード」みたいな機能があれば、
> うれしいです。

 普通の受信系フォルダの場合の同期は、

 ・ローカルにあってサーバーに無いメールはローカルから削除。
 ・サーバーにあってローカルに無いメールはダウンロード。

 なんですが、送信済みフォルダは

 ・ローカルにあってサーバーに無いメールはアップロード。
 ・サーバーにあってローカルに無いメールはサーバーから削除。

 ってすればいいので、そういう同期機能を作るのがベストかなぁと思いつつも、
作るのなかなか大変なので作ってないです。

 振り分けアクションでアップロードする機能追加は、同期機能よりは難しくな
さそうな気はします。ただ、振り分けアクションのダイアログボックスが今もう
画面に入りきるかどうかぎりぎりのサイズなので、これにさらにアクション追加
するのもなかなか難しい物があります。

 ということでどうするかですが…

 簡単に対応できるようにということで、とりあえずtkinfo.dllのマクロ関数に、

    #n = dllfunc("ImapUpload", "対象アカウント", "対象フォルダ");

 みたいなのを追加して、それを使ってマクロでアップロードできるようにする
って作戦があるかなぁと思います。

 例えば送信済みメールの振り分けアクションで「フォルダへコピー」でアップ
ロード用の一時フォルダにコピーするようにして、「受信が一段落した時」用の
自動起動マクロで、

    #count = dllfunc("GetFolderMailCount", "アップロード用アカウント"
                    , "アップロード用フォルダ");
    if( #count != 0 ) {
        $prevaccount = dllfuncstr("CurrentAccount");
        $prevfolder = dllfuncstr("CurrentFolder");
        #n = dllfunc("SelectFolder", "アップロード用アカウント"
                    , "アップロード用フォルダ");
        #n = dllfunc("SelectAllMail");
        #n = dllfunc("ImapUpload", "IMAPアカウント", "送信済みフォルダ");
        if( #n == #count ) {
            #n = dllfunc("Delete", 1);
        }
        #n = dllfunc("SelectFolder", $prevaccount, $prevfolder);
    }

 みたいなマクロを登録しておくとか。

 送信しただけの時にはマクロが実行されないって問題があるので、それについ
ては別途、「マクロ・マクロ登録...」の「自動起動」ページの「受信が一段落
した時」の下に、

      □ 送信のみの場合も実行

 ってオプションを追加するとか。

 その程度の対応でしたら、たぶん1〜2日で出来そうな気がします。

[ ]
RE:47388 送信済みメールを自動でIMAPサーNo.47393
m3snow さん 15/01/20 12:04
 
連絡をありがとうございました。

> 振り分けアクションでアップロードする機能追加は、同期機能よりは難しくな
>さそうな気はします。ただ、振り分けアクションのダイアログボックスが今もう
>画面に入りきるかどうかぎりぎりのサイズなので、これにさらにアクション追加
>するのもなかなか難しい物があります。
>
> ということでどうするかですが…
>
> 簡単に対応できるようにということで、とりあえずtkinfo.dllのマクロ関数に、
>
>    #n = dllfunc("ImapUpload", "対象アカウント", "対象フォルダ");
>
> みたいなのを追加して、それを使ってマクロでアップロードできるようにする
>って作戦があるかなぁと思います。

振り分けアクションで指定できれば、ベストと思ったのですが、
初めは連絡いただいたようなマクロでやろうと考えていたので、
マクロでの実現でもよいです。

#今後、振り分けアクションのダイアログボックスを変更することがあれば、
#IMAPサーバーにアップロードする機能も追加して頂けると大変嬉しいです。

一つお願い事項です。

> 送信しただけの時にはマクロが実行されないって問題があるので、それについ
>ては別途、「マクロ・マクロ登録...」の「自動起動」ページの「受信が一段落
>した時」の下に、
>
>      □ 送信のみの場合も実行
>
> ってオプションを追加するとか。

送信後の自動起動マクロは、「受信が一段落した時」とは、別に指定したいです。
マクロで処理する内容的にも、受信時と送信時は全然違いますので。

よろしくお願いいたします。

[ ]
RE:47388 送信済みメールを自動でIMAPサーNo.47394
m3snow さん 15/01/20 12:18
 
ちょっと話はそれますが、
IMAPサーバーの同期機能のコメントが少し気になったので。

> なんですが、送信済みフォルダは
>
> ・ローカルにあってサーバーに無いメールはアップロード。
> ・サーバーにあってローカルに無いメールはサーバーから削除。

送信済みフォルダでサーバーにあってローカルに無いメールは、
サーバーから削除しては駄目ではないでしょうか。
Gmailを他のPCのブラウザからとかスマフォからとか、メールを送信した場合、
Gmailの送信済みフォルダにありますが、ローカルにはないので、
ローカルにダウンロードが必要と思います。

#送信済みフォルダのメールの削除ってどうやって同期すればいいんだろうか...
#草稿フォルダは、上記同期方法でよさそうだけども。

> ってすればいいので、そういう同期機能を作るのがベストかなぁと思いつつも、
>作るのなかなか大変なので作ってないです。

送信済みフォルダの同期は、すごく難しいですね。

[ ]
RE:47394 送信済みメールを自動でIMAPサーNo.47399
秀まるお2 さん 15/01/20 15:06
 
> 送信済みフォルダでサーバーにあってローカルに無いメールは、
> サーバーから削除しては駄目ではないでしょうか。

 たしかにおっしゃる通りでした。

 ローカル上で削除した場合は「削除した」ってことを別に覚えておいて、同期
のタイミングでアクションを起こす必要があると思います。

 どっちにしても、同期を取るためにはメール1通ごとにIMAPサーバー上で割り
振られるIDをローカル上のメールにも割り振る必要があって、それを送信済み
フォルダで実現するのが一筋縄ではいかないです。ということでとりあえずこれ
も先送りさせていただきつつ、ImapSync関数の追加は対応します。

> 送信後の自動起動マクロは、「受信が一段落した時」とは、別に指定したいです。
> マクロで処理する内容的にも、受信時と送信時は全然違いますので。

 これはこれで難しい点がありますが…。受信が一段落した時と送信が一段落し
た時の両方のマクロが登録されてたとすると、どっちも実行しないといけない、
けども、そうすると、先に実行したマクロの終了のタイミングで次のマクロを実
行しないといけなくて、それのタイミングをつかむのが難しそうです。(マクロ
の文法エラーとかいろいろ終了の仕方がありえるので…)

 自動実行されるマクロはあくまで1つってことにしてもらって、マクロの中で、
果たして送信か受信か(あるいは両方か)で判断してもらうのが、こちら的には
楽というか、そうしないとバグの温床になるか、またはテストがすごく大変だっ
たり、かなり無理なプログラムを作らないといけなくなりそうです。

 ということで「送信が終わった後も実行」オプションを追加ということでお願
いします。

 マクロの方で、例えば

 受信直後に実行させたいマクロ = Recv.mac
 送信直後に実行させたいマクロ = Sent.mac

 だとしたら、

    loaddll "tkinfo.dll";
    $recvaccount0 = dllfuncstr("GetLastRecvAccountList", 0);
    if( $recvaccount0 != "" ) {
        execmacro "Recv.mac";
    }
    #sent = dllfunc("SentMailCount");
    if(#sent != 0 ) {
        execmacro "Sent.mac";
    }


 みたいなマクロを登録しておけば大丈夫だと思います。

 どっちにしても、一回V6.42正式版としてアップロードした後での追加とさせ
ていただきます。

[ ]
RE:47399 送信済みメールを自動でIMAPサーNo.47405
m3snow さん 15/01/20 19:51
 
> ということで「送信が終わった後も実行」オプションを追加ということでお願
>いします。

こちらの方法と連絡頂いたマクロで対応します。
色々ご提案頂きましてありがとうございました。
大変助かります。

> どっちにしても、一回V6.42正式版としてアップロードした後での追加とさせ
>ていただきます。

いつも、迅速な対応をありがとうございます。
よろしくお願いいたします。

[ ]
RE:47405 送信済みメールを自動でIMAPサーNo.47439
秀まるお2 さん 15/01/26 15:58
 
 今さらになりますが、Version 6.43β1を今アップロードした所でして、これ
にて、2つ機能追加しています。

 対応すると言っていたImapUpload関数の追加と、あと、そもそも送信済み
メールをサーバーにアップロードする用の機能も追加しました。なので結果的に
ImapUpload関数は無くもいいし、それ用のマクロも作る必要も無いと思います。

 「設定・アカウント毎の設定...」の「メールサーバー・POP3/IMAP・送信済み
メール」ってページにオプション追加しています。

 メールを送信したら、とにかく送信したメール全部をアップロードする機能っ
てことにしました。同期を取るのは難しいのですが、アップロードだけなら簡単
なので、そういう風にしてしまいました。

 あとは、草稿フォルダの同期機能があれば、ほぼ普通のIMAP4クライアント相
当になるかなぁという気がしますけども、こっちはちょっと難しいです。

[ ]
RE:47439 送信済みメールを自動でIMAPサーNo.47443
m3snow さん 15/01/26 19:50
 
早速の対応をありがとうございました。
Version 6.43β1をダウンロードして動作を確認しました。

> 対応すると言っていたImapUpload関数の追加と、あと、そもそも送信済み
>メールをサーバーにアップロードする用の機能も追加しました。なので結果的に
>ImapUpload関数は無くもいいし、それ用のマクロも作る必要も無いと思います。

最初に話していた振り分けアクションでIMAP4サーバにアップロード機能と、
ほぼ同じような機能なので、マクロも使わなくて良くて、大変助かります。
ありがとうございました。

[ ]
RE:47443 送信済みメールを自動でIMAPサーNo.47446
m3snow さん 15/01/26 21:43
 
Version 6.43β1で、1点確認事項をお願いします。

IMAP4で接続し「受信したメールをサーバー上に残す」をOFFにしている
別のアカウントもあるのですが、
V6.43β1にしてから、サーバ上のメールが削除されなくなりました。
以前、V6.30では、削除されていました。

IMAP4の動作は、POP3風にメールをダウンロードするだけのモードです。
ご確認をお願いします。

[ ]
RE:47446 送信済みメールを自動でIMAPサーNo.47449
秀まるお2 さん 15/01/27 00:13
 
 すみません。余計なことをしてしまいました。

 V6.43β1で、POP3サーバーに対してIMAP4アップロードを間違って動かした時
(ImapUploadでそういう無茶な指定をした時)におかしくなったらいけないと思
って、、念のため的な処理を入れたら、それのせいでレベルダウンしてしまって
ました。

 別件のバグ(Buffer overrunエラーが出るハグ)もあるので明日またβ2をア
ップロードさせていただきます。

 あと、ImapUploadでフォルダ名にINBOXを指定するとダメなバグも見つけたり
しました。それも直します。いろいろエラーケース(不正なパラメータが渡され
るケース)も考えていろんな処理を後で追加してるうちにバグるパターンのよう
です。

[ ]
RE:47449 送信済みメールを自動でIMAPサーNo.47452
m3snow さん 15/01/27 12:28
 
V6.43β2にアップしました。メールはサーバから削除されています。
早速のご対応、ありがとうございました。

[ ]
RE:47439 送信済みメールを自動でIMAPサーNo.49030
kimajime さん 16/01/06 06:37
 
2点お尋ねします
1)この機能はIMAP4専用ですね
2)アップロードフォルダには何を書けば良いのでしょうか?
宜しくお願いいたします

> 今さらになりますが、Version 6.43β1を今アップロードした所でして、これ
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>当になるかなぁという気がしますけども、こっちはちょっと難しいです。

[ ]
RE:49030 送信済みメールを自動でIMAPサーNo.49031
rilke さん 16/01/06 07:50
 
>2点お尋ねします
≪全文引用されていたのでコミュニテックス会議室システムが引用部分を省略処理し
ました。≫
>>当になるかなぁという気がしますけども、こっちはちょっと難しいです。

[ ]
RE:49030 送信済みメールを自動でIMAPサーNo.49034
秀まるお2 さん 16/01/06 10:31
 
> 1)この機能はIMAP4専用ですね

 アップロードする先は、IMAP4のフォルダでないとダメです。POP3サーバーに
アップロードすることは出来ないです。

 ただ、アップロードする「元」のアカウントは、POP3でも大丈夫です。

 POP3で受信する用のアカウントの送信済みメールを、別のIMAP4アカウントに
アップロードする、みたいな使い方も可能です。

> 2)アップロードフォルダには何を書けば良いのでしょうか?

 アップロード用のフォルダは、秀丸メールで別途、それ用のアカウントが登録
されてないとダメです。

 例えばgmailのアカウントの特定フォルダにアップロードしたい場合は、まず
はそのgmail用のアカウントを秀丸メールに登録しないといけないです。登録す
る時に、IMAP4用のアカウントとして登録しないといけないです。

 登録して、一度受信を実行すると、そのアカウント配下にサーバー上の
フォルダが出てきます。

 その後、「メールサーバー・POP3/IMAP4・送信済みメール」の「参照...」
ボタンを押せば、先ほどのフォルダが選択できるはずなので、選択してOKすれば
いいです。

 「参照...」ボタンを押さずに直接フォルダ名を入力するのは無理があるので、
参照ボタンからお願いします。

[ ]
RE:49034 送信済みメールを自動でIMAPサーNo.49053
kimajime さん 16/01/07 11:19
 
ありがとうございました

関係ない話ですが コメント投稿は Windows 10 x64 でChromeで行ったのですが 
何故か今日コメントを読もうとしたら開かないのでEdgeで書いてます

[ ]