大量のメール送信No.18710
にゃんこ さん 04/06/21 21:02
 
こんにちは、にゃんこと申します。
秀丸エディタではマクロを重宝に使わせて頂いております(過去にマクロ集を公開し
たことも)。

ところが、鶴亀メールも使い始めて随分になるのですが、鶴亀メールのマクロはほと
んど勝手がわかりません。
以上前置き m(_ _)m

実は、大量のメール(シェアウェアのバージョンアップ案内)を出したいのですが、
なにか良い方法はないでしょうか?

そのために特別なソフトを探し出してくる気にはならず、鶴亀メールで処理したいと
思っています。
現在、アドレスの羅列を1行1件の状態で作ってあります。
改行をカンマに全置換して(最後のカンマだけ取って)、Bcc に一気に流し込むとい
う手が一番イージーですが、相当量(千のオーダー)のアドレスにそんな風に送信を
かけると、なにか祟りがありそうで躊躇われます (^-^;。

別に、「○○さん、こんにちは」なんて入れたいとか、そんな贅沢なことは考えてお
りません。
ただ単に、過去に購入して頂いたユーザさん全員に、バージョンアップ案内のメール
を出したいだけなのです。

なにかお知恵がありましたら、ご指導のほど、どうぞよろしくお願い申し上げます m
(_ _)m

[ ]
RE:18710 大量のメール送信No.18713
山紫水明 さん 04/06/21 22:10
 
 にゃんこさん,こんばんは。

> 改行をカンマに全置換して(最後のカンマだけ取って)、Bcc に一気に流し込
> むという手が一番イージーですが、相当量(千のオーダー)のアドレスにそん
> な風に送信をかけると、なにか祟りがありそうで躊躇われます (^-^;。

 ライブラリにある拙作の「複数宛先を一人宛に分割して送信するマクロ」
http://hide.maruo.co.jp/lib/tkmacro/tkdivideadrs109.html
である程度の数のメールを送ったことはあるのですが,数千となると・・・。ち
ょっと未知の世界です。もしかしたらこのマクロでできるかもしれませんが。

     では, (^^)/~
                                        山紫水明(ユーザー)

[ ]
RE:18713 大量のメール送信No.18714
にゃんこ さん 04/06/21 23:07
 
山紫水明さん、早速のご指導ありがとうございます m(_ _)m

「複数宛先を一人ずつに分割して送信するマクロ」ダウンロードさせて頂きました。
まだ解説を読んだだけですが、これなら行けそうな気がします (^-^)

DLL の準備とかありますし、大量のメールを間違って送ってしまった日には取り返し
がつきませんので…
只今酔っぱらってます(^-^;ので、「複数宛先を一人ずつに分割して送信するマク
ロ」を近々手懐けて、この手で行かせて貰おうかと思います。

ところで、「複数宛先を一人ずつに分割して送信するマクロ」って、山紫水明さんご
自身の作なのですねっ。
作者の方からご案内頂けるとは、これ以上安心なことはありません。
もしわからないことが出てきましたら、またお教えを乞うかもしれませんけれども…
ともあれどうも、ありがとうございました m(_ _)m
取り急ぎ御礼のみ。

[ ]
RE:18714 大量のメール送信No.18720
秀まるお2 さん 04/06/22 09:29
 
 もし、鶴亀メールとは別にプログラム作成できる環境があるのでしたら、鶴亀
メールをコマンドラインから起動してメール送信させる作戦の方が楽かもしれま
せん。

   turukame.exe sendlater to=xxxx@xxxx.xxx Subject=xxxxxx BodyFile=XXXX.
   txt

 みたいな感じのコマンドライン起動を、DelphiなりVisualBasicなりから実行
してやる作戦の方が楽かもしれません。

[ ]
RE:18720 大量のメール送信No.18723
秀まるお2 さん 04/06/22 09:48
 
 sendlaterなんてありませんでした。unsentmailの間違いでした。

[ ]
RE:18723 大量のメール送信No.18736
426 さん 04/06/22 17:33
 
前にも同報メールのマクロ欲しいって言う
トピックが立ちましたよね。

山紫水明さんのマクロもいいだろうけど
メールアドレスをto欄に1つ1つ書くのは実用的じゃない。
秀丸さんがメールアドレスをto欄に書き込みマクロ
作っていたみたいだけどそれなら最初から
同報メールを普通に使い勝手がいい方法で送れる
マクロがあればいいのにね。 自分はかけないけど。

[ ]
RE:18736 大量のメール送信No.18739
秀まるお2 さん 04/06/22 17:58
 
 一応、僕自身は、バージョンアップ案内メールの送信には、自前のwww.maruo.
co.jp上にて、comblatを使ってメール送信をしていますが…。やり方としては、
Bcc:ヘッダに宛先を入れて普通に送信するのと同じようなことです。

 バージョンアップの案内メールくらいなら、Bcc:に宛先を入れて送ってもいい
んじゃないかとは思いますが…。あくまでTo:ヘッダに1人1人のメールアドレ
スを入れて送りたいけども、メールは1つしか作成したくないって話ですかね。

 送信してる最中にエラーになったり中断したりした時に、果たして誰から誰ま
で送信したのか覚えておくような仕組みを考えないといけなくて、それはそれで
面倒というか、マクロでどうにかなる話ではありません。

 今特にこれといった機能追加の予定が無いので、そういう面倒な割に使う人が
極一部の人だけって機能も作って悪くはありませんが…。

[ ]
RE:18739 大量のメール送信No.18744
秀まるお2 さん 04/06/22 18:17
 
 To:とは別に、

 Each-To:

 みたいな独自ヘッダを用意して、そこに宛先を書いた場合は1通1通送られる
とか、そういう仕様ならありかもと思ったりして…。仮にそれでメールを送信し
てて中断した場合は、中断した時点で送信済みになった人だけ、

 Each-Sent-To:

 というヘッダに宛先が移動する(=メールが書き換わる)という仕様なんかを
今思いついたりしましたが…。

 NoAttach-Cc:

 と書いた場合は、その人には添付ファイル無しで送るということも出来るとい
いかもと思ったりして。

 今思っただけなので、別に今から作ろうと思ってる訳ではありません。

[ ]
RE:18714 大量のメール送信No.18745
山紫水明 さん 04/06/22 21:23
 
 にゃんこさん,こんばんは。

> 「複数宛先を一人ずつに分割して送信するマクロ」ダウンロードさせて頂きま
> した。
> まだ解説を読んだだけですが、これなら行けそうな気がします (^-^)
>
> DLL の準備とかありますし、大量のメールを間違って送ってしまった日には取
> り返しがつきませんので…

 このマクロではいったん未送信フォルダに保存しますので,出す前の確認はで
きるでしょう。
 もし,アドレスのリストがあるのであれば,まず次のマクロでヘッダに取り込
むこともできるしょう。

//--- TKInsertAdrList.mac ---------------------------------------------//

//アドレスリストから To: にアドレスを連続挿入
//リストの形式は1行1アドレスの改行区切り,リストの置き場所は任意
//対象メールを開いた状態で実行

#handlel = hidemaruhandle(0);
newfile;
#handle2 = hidemaruhandle(0);
showwindow 0;
disabledraw;
loaddll "TKInfo.dll";
#n = dllfunc("SwitchHeaderView", 0);
gofiletop;
beginsel;
gofileend;
delete;
INSERTFILE;
gofiletop;
#lc = linecount2;
#i = 1;
while( #i < linecount2 ) {
    #by = y;
    golineend2;
    $adr[#i] = gettext(0, #by, x, y);
    movetolineno 1, lineno + 1;
    #i = #i + 1;
}
setactivehidemaru #handlel;
closehidemaruforced #handle2;
disabledraw;
gofiletop;
searchup "^To:", regular;
right;
insert $adr[1];
#i = 2;
while( 1 ) {
    if( $adr[#i] == "" ) break;
    insert ", " + $adr[#i];
    #i = #i + 1;
}
question "宛先を分割するマクロをすぐ実行しますか?";
if( result == yes ) execmacro "TKDivideAdrs.mac";
endmacro;
//-----------------------------------------------------//

 最初は比較的少ないリストでテストを重ねた方が安全だと思います。

     では, (^^)/~
                                        山紫水明(SANSHISUIMEI)

[ ]
RE:18713 大量のメール送信No.18746
426 さん 04/06/22 22:54
 
>http://hide.maruo.co.jp/lib/tkmacro/tkdivideadrs109.html
>である程度の数のメールを送ったことはあるのですが,
>数千となると・・・。ちょっと未知の世界です。

数千以前にメールアドレス400個だけでも固まってしまう。
一応報告しておきます

[ ]
RE:18746 大量のメール送信No.18747
秀まるお2 さん 04/06/22 23:14
 
>数千以前にメールアドレス400個だけでも固まってしまう。
>一応報告しておきます

 出来れば「xx分くらい待ったけども固まったままだった。Escキーを連打して
も反応が無かった」って程度の情報を書き込んでいただいた方が助かるかもしれ
ません。

[ ]
RE:18747 大量のメール送信No.18748
426 さん 04/06/23 01:55
 
>>数千以前にメールアドレス400個だけでも固まってしまう。
>>一応報告しておきます
>
> 出来れば「xx分くらい待ったけども固まったままだった。Escキーを連打して
>も反応が無かった」って程度の情報を書き込んでいただいた方が助かるかもしれ
>ません。




固まったとかということではなくて文字列が長すぎますと
いうエラーが表示されます。

テストメールアドレス が400個
20桁の英数字@mydomain.com


改善されるかわからないうちだけど勝手に要望でしてみます。

メールアドレス数が多くて固まるのが嫌だから
作業は500メールずつに区切って自動でやって欲しい
例えばmaillist.txtのメールの中のメールアドレスの数が
4000ならmaillist1.txtからmaillist8.txtまで
自動で生成してそれを順番に固まることが無いように
作業が出来ればうれしい。

作業を行ってるときは作業がどの段階化を示す
数字を出してもらいたい。
例えば、作成したメールの数/全メール という感じで

のんびりの動作でいいから固まらずにちゃんと
動作してくれるものがほしいなぁ。

[ ]
RE:18748 大量のメール送信No.18749
山紫水明 さん 04/06/23 07:45
 
 426さん,こんにちは。

> 固まったとかということではなくて文字列が長すぎますと
> いうエラーが表示されます。
>
> テストメールアドレス が400個
> 20桁の英数字@mydomain.com
 
 貴重な情報を提供いただきありがとうございます。

> 改善されるかわからないうちだけど勝手に要望でしてみます。

 後ほどまた,何とか実現できないか考えて見たいと思います。

     では, (^^)/~
                                        山紫水明(SANSHISUIMEI)

[ ]
RE:18749 大量のメール送信No.18752
秀まるお2 さん 04/06/23 09:31
 
 文字列変数の長さ制限の関係があるので、あまり長い文字列の処理は無理があ
りそうです。

 同報メール関係の機能について、鶴亀側に適当な機能追加なり外部ソフトを作
るなり、その辺いろいろ検討してみます。(実際に作るかどうかは別として)

[ ]
RE:18752 大量のメール送信No.18765
山紫水明 さん 04/06/23 20:15
 
 秀まるお2さん,こんばんは。

>  文字列変数の長さ制限の関係があるので、あまり長い文字列の処理は無理が
> ありそうです。

 やはりそうでしたか。確認の手間が省けました。m(__)m

 ところで,To: ヘッダ一つにアドレスを書き連ねるのではなく,
 To: xxx@bbb.ccc
 To: xxx@bbb.ccc
 To: xxx@bbb.ccc
   ・・
   ・・
という具合にヘッダを並べる場合,この To: の数に制限はあるのでしょうか。

 それから,「未送信」フォルダに保存できるメール数,「未送信メールの送
信」で一挙に送信できるメールの数に制限はありますか?

>  同報メール関係の機能について、鶴亀側に適当な機能追加なり外部ソフトを
> 作るなり、その辺いろいろ検討してみます。(実際に作るかどうかは別とし
> て)

 もし,それができるようになれば,マクロより安定して高速になるでしょう。
私のマクロもそのときに役割を終えるでしょう。

     では, (^^)/~
                                        山紫水明

[ ]
RE:18765 大量のメール送信No.18767
秀まるお2 さん 04/06/23 21:38
 
> という具合にヘッダを並べる場合,この To: の数に制限はあるのでしょうか。

 宛先の数に制限は無いです。ただし、メールサーバーによって制限されるケー
スは考えられます。"RCPT TO:"のコマンドを何回も連続実行するとエラーになる
ことはあるかもしれません。

 ちなみに鶴亀メール内部には、任意の長さの文字列を扱う、いわゆるMFCでの
CString相当のクラスがあって、長さ不定文字列はそのクラスを使って実現して
います。そのクラス自体は、とんでもなく長い文字列も扱うことが出来ます。普
通にプログラミングした場合だと、LocalAllocの長さ制限(約1.5Mバイトまでの
制限)にひっかかるんですけど、鶴亀の場合はLocalAllocできないようなサイズ
でも、CreateFileMappingを使って処理するようにしています。

[ ]
RE:18745 大量のメール送信No.18772
山紫水明 さん 04/06/23 22:43
 
 追伸です。

 マクロを少し改善してみました。
 1ヘッダ当たりのアドレス数を100にして複数の To: ヘッダを作るように
してみました。
 こちらでは千までのメールはできました。

/--- TKInsertAdrList.mac ---------------------------------------------//

//アドレスリストから To: にアドレスを連続挿入
//リストの形式は1行1アドレスの改行区切り,リストの置き場所は任意
//対象メールを開いた状態で実行,リストの途中からでも実行可

#num = 100;
#ime = imestate;
if( #ime ) imeswitch;
#begin = val( input("開始する行番号", "1") );
if( #ime ) imeswitch;
if( #begin == 0 ) endmacro;
title "データ読み込み中";
#handlel = hidemaruhandle(0);
newfile;
#handle2 = hidemaruhandle(0);
showwindow 0;
disabledraw;
loaddll "TKInfo.dll";
#n = dllfunc("SwitchHeaderView", 0);
gofiletop;
beginsel;
gofileend;
delete;
INSERTFILE;
movetolineno 1, #begin;
#lc = linecount2 - #begin + 1;
#i = 1;
#k = 1;
while( #i < #lc ) {
    #j = 1;
    while( #j <= #num ) {
        #by = y;
        golineend2;
        $adr[#j] = gettext(0, #by, x, y);
        if( #j == 1 ) $to[#k] = $adr[#j];
        else $to[#k] = $to[#k] + ", " + $adr[#j];
        movetolineno 1, lineno + 1;
        #j = #j + 1;
        #i = #i + 1;
        if( #i >= #lc ) break;
    }
    #timer = dllfunc("SetAutoPushTimerMilli", 400, "ok");
    message str(#num * #k);
    #k = #k + 1;
}
setactivehidemaru #handlel;
closehidemaruforced #handle2;
disabledraw;
#k = 1;
$s = dllfuncstr( "SetHeader", "To", $to[#k] );
#k = 2;
while( 1 ) {
    if( $to[#k] == "" ) break;
    $s = dllfuncstr( "AddHeader", "To", $to[#k] );
    #k = #k + 1;
    title str(#k * #num) + " / " + str(#lc - 1);
}
enabledraw;
question "宛先を分割するマクロをすぐ実行しますか?";
if( result == yes ) execmacro "TKDivideAdrs.mac";
endmacro;
//-----------------------------------------------------//

     では, (^^)/~
                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:18767 大量のメール送信No.18776
山紫水明 さん 04/06/23 23:05
 
 秀まるお2さん,こんばんは。

>  宛先の数に制限は無いです。ただし、メールサーバーによって制限されるケー
> スは考えられます。"RCPT TO:"のコマンドを何回も連続実行するとエラーになる
> ことはあるかもしれません。

 ここでは分割メールを作る予備作業として考えているので,この点は問題ないと
思いますが,これに関連して 18765 で質問した

>  それから,「未送信」フォルダに保存できるメール数,「未送信メールの送
> 信」で一挙に送信できるメールの数に制限はありますか?

に関しては上記のお答えが当てはまると考えてよろしいでしょうか?

>  ちなみに鶴亀メール内部には、任意の長さの文字列を扱う、いわゆるMFCでの
> CString相当のクラスがあって、長さ不定文字列はそのクラスを使って実現して
> います。そのクラス自体は、とんでもなく長い文字列も扱うことが出来ます。普
> 通にプログラミングした場合だと、LocalAllocの長さ制限(約1.5Mバイトまでの
> 制限)にひっかかるんですけど、鶴亀の場合はLocalAllocできないようなサイズ
> でも、CreateFileMappingを使って処理するようにしています。

 えーっと,これは18752 でコメントされた

>  文字列変数の長さ制限の関係があるので、あまり長い文字列の処理は無理があ
> りそうです。

とどういう関係になるのでしょうか。

                                        山紫水明
                                        SANSHISUIMEI

[ ]
RE:18776 大量のメール送信No.18782
秀まるお2 さん 04/06/23 23:40
 
>>  それから,「未送信」フォルダに保存できるメール数,「未送信メールの送
>> 信」で一挙に送信できるメールの数に制限はありますか?
>
>に関しては上記のお答えが当てはまると考えてよろしいでしょうか?

 どちらも、鶴亀メールとしての制限はありません。しいて制限があるとしたら、
FAT32の場合だと、1フォルダに作成できるファイル数の制限というのはありま
すけど。

> えーっと,これは18752 でコメントされた
>
>>  文字列変数の長さ制限の関係があるので、あまり長い文字列の処理は無理があ
>> りそうです。
>
>とどういう関係になるのでしょうか。

 マクロの中での文字列変数の長さには制限がありまして、それはそれで、鶴亀
メールじゃなくて秀丸側の制限です。文字列変数の長さは8キロバイト程度とな
ってます。

[ ]
RE:18710 大量のメール送信No.18784
にゃんこ さん 04/06/24 00:46
 
あああぁ〜、いろいろありがとうございます m(_ _)m

山紫水明さんの「複数宛先を一人ずつに分割して送信するマクロ」を試してみたとこ
ろ文字列が長すぎる旨のエラーになり、一瞬マクロの解像も考えたのですが到底咄嗟
には理解できずあっさり諦め…
To の羅列を含めてメールが 10 KB 程度なら処理できるけれど 15 KB くらいだと文
字列が長すぎると言われることがわかりましたので…

To を分割して処理して、既に目的を達しました m(_ _)m
まぁ、少々というか、かなり面倒ではありましたが、やるべきことは明確でしたので、
マクロを読むよりは早いな…と (^-^;

面倒なこともあり、というか、個人的には始終バージョンアップ案内を受け取るのも
どうかと思うので、ソフトのマイナーバージョンアップでは案内は出していません。
今回は気合の入った大規模バージョンアップで、利用者の方にも十分価値があると思
って、はじめて案内メールという問題に直面した次第です。

そんなわけで、次回また同じ問題に直面するのは早くとも半年後。
まぁ、少々面倒ではありますが一応この手が使えるわけなので(この手が使えない状
況に比べれば遙かに楽なので)、私の一応の目的はおかげさまで達しているとお考え
下さい。
もちろん、こういうときに、強力・心強い機能やマクロが出来てくれれば、なお幸せ
です♪

こうしてともあれ目的を達してしまうと、ものぐさな私は自分でマクロをどうこうと
思わないので、結局、鶴亀メールのマクロを手懐ける切っ掛けを失ったのかな (^o^;

[ ]
RE:18782 大量のメール送信No.18786
山紫水明 さん 04/06/24 07:56
 
 秀まるお2さん,こんにちは。

>  どちらも、鶴亀メールとしての制限はありません。しいて制限があるとした
> ら、FAT32の場合だと、1フォルダに作成できるファイル数の制限というのは
> ありますけど。

>  マクロの中での文字列変数の長さには制限がありまして、それはそれで、鶴亀
> メールじゃなくて秀丸側の制限です。文字列変数の長さは8キロバイト程度とな
> ってます。

 今回は拙作マクロについて,千のオーダーでの送信についての質問がありまし
たので,お尋ねしたわけですが,ご回答ありがとうございました。ともあれ,大量
メールはある程度小分けするように注意を促した方が無難のようですね。

     では, (^^)/~
                                        山紫水明

[ ]