秀丸メールでメーリングリストを運営するマクロ
    ml-modoc.mac    V2.10対応(マニュアル兼用)
2012.  4. 18

  
■はじめに

 このマクロは、秀丸メールを使ってメーリングリスト(以下、MLと表記します)を運営するためのものです。 登録したメンバーからのメールを受信、必要な処理を行った後、メールをメンバー全員に自動で配信します。
 メールの受信・配信は、ごく標準的な機能ですが、これに添付ファイルの処理をいろいろ選択できるように作りました。

 

 
■主な特徴
 このマクロの主な特徴は次の3つです。

◆自前のPCとメールアドレスを使って独自にメールの受信・配信を行う。
 プロバイダのMLサービスは利用しません。
※自前のサーバーを立てるわけではありません。メールサーバー(サービス)はプロバイダのものを利用し、メールのチェックや配信のみを自前のPCで行います。

◆画像(JPG,BMP)ファイルを自動的に小さくして配信
 大きな画像ファイルをメール向けに小さくしなくても、デジカメなどで撮ったままのサイズでメール送信すれば、設定したサイズに自動的に縮小してから配信します。
 その他、添付ファイルの拡張子別に配信規制やサイズ制限がかけられます。

◆実行モードが選択可能
 通常の「MLモード」の他に、本番前に動作確認する「テストモード」があります。また、投稿を管理者だけに限定した「MM(メールマガジン)モード」もあります。

 

 
■その他の特徴
◆管理者コマンド機能
 参加メンバーの登録・削除や設定の変更を管理者がメールで行うことが出来ます。

◆宛先指定方法が2種類
 配信メールの宛先を<Bcc>ヘッダにメンバー数分入れて1通のメールで配信する方法と、宛先分のメールを別々に作成して配信する方法が選択できます。

◆動作オプションが多数
 エラーメールなどの処理方法や拡張子の設定など、動作オプションを多数用意しました。

◆管理者へのエラーや処理結果の報告機能
 エラーメールなど、管理者への通知方法を選択可能です。また、1日の処理結果を管理者にメールで報告する機能などもあります。

◆補助管理者も設定できる
 管理責任者(1名)とは別に補助管理者も複数設定できます。

 

 
■出来ないこと、注意事項

◆一般的なプロバイダのMLサービスにある機能のうち、参加希望者自身がアドレス登録する機能はこのマクロにはありません。管理者が秀丸メールに手動入力するか、コマンドメールで登録します。

◆このマクロは100人程度の規模を想定して作りました。理論上の人数制限はありませんが、現実的にはあまり大人数のMLには不向きかと思われます。

◆秀丸メールの設定項目のいくつかが全アカウント共通になっている関係から、このマクロの実行にあわせて他のアカウントの処理が制限される場合があります。

 

 
■全体の流れ
 参加者-プロバイダ−PCとの関係は下図のようになります。
     

 
■ML運営に必要なもの
 MLを管理運営するためには、以下のものを用意して下さい。

◆PC(Windowsマシン)1台
 ML専用でなくても動作しますが、秀丸メールが動作するハード、ソフトの環境をご用意下さい。
 基本的な項目の設定作業では、管理者がPCを直接操作する必要があります。
 MLの自動運営で使用する場合は、インターネットの常時接続回線に接続し、PCは常時電源オンで使用します。

◆メールアドレス1個
 ML用のメールアドレスが専用で1個必要です。メールアカウント(ボックス)はML専用でなくても動作します。別名アドレスを使うことで、ML用と他の用途で同じメールボックスを共有できます。
 ただし、このアドレスはMLの送受信用ですから、管理者がMLの1メンバーとして参加したり管理で使用するアドレスは別に必要です。
 なお、Webメールなどの秀丸メールから送受信できないアドレスでは動作しません。

◆秀丸メール
 秀まるおさん作のシェアウエア。
 HPはこちら→秀まるおのホームページ

◆このマクロ(ml-modoc.mac)
  フリーソフトです。著作権は放棄しませんが、自由に改変してご利用下さい。ただし、改変した場合はもちろんのこと、改変なしで利用した場合も含め、バグ等が原因による保証は一切出来ませんので、ご了承願います。
 利用は個人(グループ、サークル含む)用途に限定させてください。

◆縮小専用(shukusen.exe)V1.5
 JPG,BMP画像を縮小するフリーソフト。
 HPはこちら→有限会社インターセクション
 このマクロは「縮小専用」に特化した作りになっています。他のソフトを使用する場合はマクロの書き換えが必要です。

◆その他
 必須ではありませんが、ウイルスチェックなどはこのマクロでは出来ませんから、別途設定しておいて下さい。

 

 
■秀丸メールの設定
 ML運用する前に、以下に従って秀丸メールの設定をして下さい。

◆秀丸メールをインストール
 V5.63以降のバージョンを推奨します。

◆アカウントの登録
 MLの送受信で使用するメールアカウントを登録しておきます。
 MLへの投稿とMLからの送信は、このアカウントに登録されているアドレスになります。別名登録したアドレスも指定できます。

◆ML参加メンバーのアドレス登録
 アドレス帳直下にMLのグループを作成してください。グループ下位のグループでは動作しません。当該グループ内にML参加者の名前とアドレス等(下記)を登録してください。

 MLで使用する入力項目は以下のとおりです。
 備考1、7、8は不要の場合は""にしておきます。
 ・名前
 ・メールアドレス
 ・備考1 内容任意
  ユーザー設定値で<#MailInsertFrom=1>の時、配信メールの本文先頭行に
  投稿者の名前・アドレスと共に備考1の内容を挿入します。
 ・備考7 本文末尾の広告行等のカット行数(1〜nの数字)
  ここでの指定は、マクロ内の<#MailCutEnd>が1または2のとき有効になります。
 ・備考8 管理者コード等(下記-半角1文字で)
  @ 管理責任者1名のみ(必須)
  * 補助管理者。複数人設定可。
  S 配信のみの参加者。投稿は出来ません。
  Q 休止中アドレス。MLの受信・配信ともに除外します。送受信できません。
  (復活する可能性があるアドレスを残しておきたい場合に使ってください。)

 備考8に何も入力がない(無印)アドレスは一般の参加者になります。MLモードの場合は投稿・配信とも可能です。

◆署名の登録
 メール(通常配信、エラー及び迷惑メール転送)にフッターをつける場合は、秀丸メールに署名を登録しておきます。秀丸メールでの自動挿入の指定とは無関係にマクロが文末に自動挿入します。
 署名の種類と名前はユーザー設定値を参照してください。

◆添付ファイル、htmlメール、winmail.datの設定
 「全般的な設定」-「ウイルス対策」のところで、「自動削除するファイル指定」の設定は任意です。ここで設定すれば一切無視されますが、マクロで指定すればエラーメッセージを出すことも出来ます。
 htmlメールでのhtml部分の除去指定は任意です。マクロは秀丸メールの設定にかかわらずHtml部分を削除してテキストメールで配信します。
 また、outlook(メールソフト)が送信時に添付してくる「winmail.dat」ファイルは自動的に削除します。もしこのファイルの中に入っている画像ファイルなどを添付ファイルとして取り扱いたい場合は、秀丸メールの設定で、「winmail.dat」の中から画像ファイルを分離する指定をすれば添付ファイルとして処理できます。

◆マクロの登録と自動起動の設定
 秀丸メールにマクロを自動起動させるための設定をします。マクロ自体は1回の起動で1回しか実行しません。
 繰り返し実行させる(MLの自動運営)には、秀丸メールを常駐にして定期的に受信したあと実行させたり、Windowsのタイマー設定で秀丸メールの起動と同時にマクロを実行する方法など、どの方法でマクロを起動させても動作すると思います。
 また、秀丸メールから手動で起動して1回だけ実行することも可能です。
※なお、定期受信からマクロを起動する場合、コマンドも使用する場合はML用のアカウントとコマンドアカウントの両方を定期受信にしてください。片方だけ定期受信にしてしまうと、もう一方のメールを読みに行きません。 

◆「確認メッセージ2」の設定
 「全般的な設定」−「上級者向け」のところに「確認メッセージ2」の設定項目がありますが、これらは全てチェックをはずしたほうが無難です。(特に半角カナ、機種依存文字、制御文字など)
 全ての項目がMLの動作に関連するとは限りませんが、予期しない内容のメールが来るとそこで秀丸メールが確認メッセージを出してしまうため、MLの自動運営が止まってしまいます。
 この部分はマクロで確認する方法がないため、設定頼みになります。

◆メールの自動振り分けの設定(は、しない)
 MLへの投稿メールのフォルダ自動振り分けは設定しないでください。マクロが"受信"フォルダからML宛のメールを自動的に選別します。

◆その他の設定
 秀丸メールは非常に細かな設定が可能になっていますが、このマクロで全ての設定について動作確認することは事実上不可能です。そのため、設定の内容によっては動作しない場合があります。

◆「縮小専用」のインストールとフォルダの設定
 このマクロは「縮小専用V1.5」を使用してjpg、bmpファイルを自動的に縮小して配信します。
 マクロの仕様どおり「縮小専用」を使う場合はインストールし、最低一度は実行して下さい。実行したときに出来るiniファイルを使用します。iniファイルの内容(設定)は何でもかまいません。
 また、マクロ内で「縮小専用」のあるフォルダ名を指定して下さい。

 

 

■このマクロの設定

 このマクロで使用するアカウントを登録したり、動作オプションの選択をする必要があります。最初はエディタでマクロを修正する方法によって値の設定をします。
 設定する項目はマクロの最初のほうにまとめてあります。基幹変数(#RunMode〜$LogFolderまで)の値を変更する場合はマクロを修正してください。
 それより後の変数(ユーザー設定値)は、最初の1回目の起動ではマクロの値で実行します。
 一度実行すると、「ユーザー設定値」の内容はメール形式で保存しますので、2回目以降の「ユーザー設定値」の変更は、その内容が保存されているメール(詳細は下のログの説明を参照)を編集してください。マクロ内で設定した値は、最初に実行するときと一括初期化するときだけに使用します。
 マクロでの指定方法は、変数名の頭が<$>のものは文字列を""で囲って指定、<#>のものは数値を指定してください。どちらもその後ろに";"をつけます。それより右の"//"以降はコメントです。自由に変更してかまいません。

 次表はその設定項目です。変数が多いですが、基幹変数(#RunMode〜#MlAccountまで)と縮小専用のフォルダさえ設定すればとりあえず動くと思います。
 最初は実行モード(#RunMode)を0にしてテストすることをおすすめします。

 
★★基幹変数(マクロ内で値を修正する変数)★★
◆実行モード等
#RunMode
実行モード

0:テストモード
 配信メールは送信せず草稿フォルダに入れて終了。
 その他は「1.MLモード」と同じ処理。
 なお、実行途中の要所で確認メッセージが出ます。 

1:メーリングリスト(ML)モード
 メールの受信から配信まですべて自動処理。通常はこのモードを使います。
 なお、マクロを手動で起動した場合は、終了時のみ処理件数が表示されます。

 このモードでは、メールを受信してから配信するまで、およそ下記の処理・チェックを行います。
 ・ML宛メールを選別
 ・宛先・送信元のチェック
 ・メールサイズ、本文サイズチェック
 ・添付ファイルの数、サイズチェック
 ・画像ファイルの自動縮小(必要な場合のみ)
 ・タイトル付替え、フッター処理等
 ・メール配信
 ・送信ログ保存、管理者への送信記録報告 

2:メールマガジン(MM)モード
 メールの投稿者を管理者のみに限定。その他は「1.MLモード」と同じ処理。
 投稿できるのは管理責任者と補助管理者です。
 なお、マクロを手動で起動した場合は、終了時のみ処理件数が表示されます。

#CmdMode 
   コマンドメールによる管理(アドレス登録、ユーザー設定値変更など)
0:使用しない
 コマンドのアカウントも指定不要です。

1:使用する(管理責任者のみ)
 管理責任者がコマンドメールを使用します。補助管理者は、「連絡」コマンドは届きますが、コマンドメールを送ることは出来ません。

2:使用する(管理責任者+補助管理者)
 管理責任者に加えて補助管理者もコマンドメールを使用できます。

◆名称、アカウントなど
$MlName
  メーリングリスト名
 配信メールの送信元アドレスやヘッダに使用します。
 その他送信記録やエラーメッセージなどでも使用。
$MlGroup
  アドレス帳のMLグループ
 MLに参加するアドレスが入っている、アドレス帳の中のグループ名
 グループは、アドレス帳直下に作って下さい。このグループに登録されているアドレスがML参加者となります。
$MlAccount
  MLの送受信で使用するアカウント名
このアカウント名と同じ名前で秀丸メールに登録しておいてください。
#MlAccount 
  上記アカウント内の別名使用
0:使用しない(メインのアドレスを使用)
1〜n:別名アドレスを使用(秀丸メールで指定した、左からの順序)
$CmdAccount
  コマンドメールの送受信で使用するアカウント名
このアカウント名と同じ名前で秀丸メールに登録しておいてください。
#CmdAccount
  上記アカウントの別名使用
0:使用しない(メインのアドレスを使用)
1〜n:別名アドレスを使用(秀丸メールで指定した、左からの順序)
◆フォルダ指定
 下記フォルダは、アカウント直下のフォルダを指定してください。
 実行時に指定フォルダがなければ自動作成します。
$RecvFolder
マクロが受信メールを一時保管するフォルダ名。
正常処理されるとこのフォルダは空になります。
※このフォルダは専用にしてください。他の用途との併用は出来ません。
$DoneFolder
正常処理した受信メールを保存するフォルダ
$SentFolder
配信済みメールを保存するフォルダ名
$ErrFolder
エラーで配信しなかったメールを保存するフォルダ名
$SpamFolder
迷惑メールを保存するフォルダ名
$LogFolder
 送信記録、ユーザー設定値及びメール連番(いずれもメール形式)を保存するフォルダ名
 送信記録は1日分を1通のメール形式で保存します。メール連番とユーザー設定値は、1通のメールを随時更新していきます。
$CmdFolder 
  コマンドメールを保存するフォルダ名。送受信ともここに保存します。
 
★★ユーザー設定値(メール内で値を修正する変数)★★
◆メモ
$MlVersion
  このマクロのバージョン等
 送信ログに使います。内容はバージョンでなくてもなんでもかまいません。自由に変更してください。
$Memo1 〜 $Memo5 
  メモ欄です。内容は自由に変更してください。
◆メールのタイトル等
$MailTitle
配信メールへの付加タイトル
 タイトルの先頭に付加する文字列。区切り文字(<:>など)も必要なら指定してください。付加しない場合は""にしておきます。
 ""以外を指定すると、前後に"[""]"を付加し、 "[<$MailTitle>] " となります。
#MailRenban
配信メールのタイトル先頭に付加する連番
 0:つけない
 1〜10:つける  (<$MailTitle>≠""の場合に有効)
 タイトルと合成して、"[<$MailTitle>###] " となります。連番を保存している場所と内容は、この下の「ログの説明」をご覧ください。
 連番の桁数がこの値以下の場合は頭を「0」で埋めます。
 連番の桁数がこの値より大きい場合は通常表示になります。
※例えば、「3」を指定した場合は、「001」から「999」までは3桁表示になり、1000以上は番号そのままの表示になります。
$MailSweepTitle
  返信メールのタイトル重複表示の削除 (配信されるときにつく先頭のタイトルは別)
 0:しない
 1:すべて削除する(「Re:〜」となる)
 2:2個以上の場合のみ1個削除する(「Re:[○○:nnn]〜」となる)
$MailErrTitle
エラーメールへの付加タイトル
エラーメールを管理者に転送するときのタイトル先頭に付加する文字列
$MailSpamTitle
迷惑メールへの付加タイトル。
迷惑メールを管理者に転送するときのタイトル先頭に付加する文字列。
#MailInsertFrom
配信メールの本文先頭に投稿者名等を
 0:入れない
 1:入れる <名前+アドレス+備考1>を挿入します。
 ただし、<#SendFrom=1or2>の場合は<名前+備考1>を挿入します。
#MailCutEnd
本文末尾を投稿者のアドレス帳備考7で指定した行数分カットして配信
 0:しない
 1:する(アドレス帳備考7で指定されている行数をカット)
 2:「1」+さらに上の行に空行が現れるところまでカット。この場合は本来の本文と広告行等の間に最低1行の空行が必要です。

 アドレス帳備考7が""の場合は上の指定にかかわらずカットしません。
 なお、<$MlAccount>のアドレスが広告付きの場合は、ここではカットできません。

◆署名−事前に秀丸メールに内容を登録しておいてください
$MailSignName
  配信メールの本文末尾に挿入する署名の名前。 ""ならつけない。
$MailErrSignName
  エラーメールを転送するときの本文末尾に挿入する署名の名前。 ""ならつけない。
$MailSpamSignName
  迷惑メールを転送するときの本文末尾に挿入する署名の名前。 ""ならつけない。
$MailLogSignName
   管理者報告メールを送信するときの本文末尾に挿入する署名の名前。 ""ならつけない。
◆配信、送信記録
#SendToBcc
配信メールの宛先指定方法
 0:配信する全部のアドレスをBccヘッダに入れて1通のメールで送信
 1:配信するアドレス分のメールを作成して、個別メールで送信
 プロバイダによっては宛先の数を制限している場合があります。また、ヘッダの大きさがどこまで許されるのかも分かりません。「0」でうまく送れない場合は「1」を指定してください。ただし、<$SentFolder>には作成したメール全部が保存されます。
#SendKeitai 
送信メールの携帯ドメインへの配慮。
 配信する先が携帯のドメインの場合、単純な返信動作でMLに返信できるようになります。(普通に返信すると投稿者が宛先になってしまう携帯への対応)
 0:しない(Fromヘッダは投稿者のアドレス)
 1:携帯ドメインには<From>ヘッダをMLのアドレスに置き換えて送信。
 ML配信では<#SendToBcc=1>の時のみ有効です。ただし、この場合は<#MailInsetFrom=1>にしないと携帯利用者には投稿者名が分かりません。
 なお、管理者向けメールでは、<#SendKeitai=1>なら、管理者の誰か一人でも携帯利用の場合はFromヘッダを不都合のないように置き換えます。
#SendFrom
  ML配信メールで投稿者のアドレスを隠すかどうか
 0:通常どおり(Fromヘッダは投稿者アドレスまたは<#SendKeitai>による処理)
 1:投稿者アドレスを隠す(FromヘッダはMLのアドレスに置き換える)
 2:「1」+<In-Reply-To>などのヘッダも消して配信します。ただし、この場合は配信メールをスレッド表示してもつながりません。
 なお、実際の投稿者名を表示するには、<#MailInsertFrom=1>にして下さい。この場合でも表示するのは名前と備考1だけで、投稿者のアドレスは表示しません。
#ReportLog
  1日分の送信記録等を管理者にメール送信
 0:しない
 1:管理責任者に送信
 2:「1」+補助管理者にも送信
日付が変わったら前日分の送信記録と,その時点のユーザー設定値や参加者のアドレスリスト一式を送信します。
#SendWelcome
  コマンドでの参加者アドレス登録後に本人にWelcomeメッセージを送信
 0:しない
 1:送信する(+管理責任者にもBccで送信)
 2:「1」+補助管理者にもBccで送信
 マクロを一度実行すると<$LogFolder>に「[<$MlName>]メーリングリストへようこそ」というタイトルのメールが自動的に出来ます。このメールがウェルカムメッセージになります。このメールのタイトルと本文を自由に変更して事前に完成させておいてください。なお、ヘッダは修正しないでください。
※この値が「1」または「2」の場合は、<#CmdMode=0>であってもメールは作成します。(事前に編集出来るようにするため) メールが邪魔な場合は,この値を「0」にしてメールを消してください。
◆宛先チェック
#SpamMailJob
迷惑メールと思われる場合の処理
秀丸メールの迷惑メールフィルターに引っかかったメールや、この下の<#ToCcCntCheck>で迷惑メールとした場合、あるいは未登録アドレスからのメールの処理。
この処理は投稿者には返信しません。
 0:そのまま(管理者が手動でフォルダ移動する等)
 1:管理責任者に転送(処理後は<$SpamFolder>に移動)
 2:「1」+補助管理者にも転送
 3以上:とりあえずそのまま。この値以上の日数をすぎたら<$SpamFolder>に移動
#ToCcCntCheck
複数宛先のチェック
0:チェックしない (送信元がMLのメンバーならすべて通す)
この場合でも、<To:>にMLのアドレスが入っている必要があります。<Cc:>に入っている場合はML宛とは見なしません。(ML宛以外のメールは、下の<#OtherMailJob>の処理になります。)
1:チェックする(Toが複数またはCcがひとつ以上は迷惑メール扱い)
#OtherMailJob
ML宛以外または<#RunMode=2>のときの管理者以外からのメールの処理
 0:そのまま(管理者が手動でフォルダ移動する等)
 1:管理責任者に転送(処理後は<$DoneFolder>に移動)
 2:「1」+補助管理者にも転送
 3以上:とりあえずそのまま。この値以上の日数をすぎたら"ゴミ箱"へ
※同じアカウントを他の用途と併用している場合は、0または3以上を指定してください。
◆メールのエラー処理
#ErrMailJob
これ以降の「◆メール、添付ファイルのサイズ」と「◆そのまま配信する拡張子」のチェックで「無効」メールと判定した場合の処理方法
0:本文のみ配信(本文先頭にコメント挿入)
1:(未使用−指定しても自動的に「0」に修正される)
2:管理責任者にメール転送
3:「2」+補助管理者にもメール転送
◆メール、添付ファイルのサイズ
#TotalSizeLmt
メール全体(ヘッダ、添付ファイル含む)の最大サイズ(KB)
このサイズ超は「無効」 → 処理方法は、<#ErrMailJob>へ(以下同様)
無効の場合は、<#ErrMailJob>が「0」であっても、「2」を指定したものと同じ処理になります。
#BodySizeLmt
本文の最大サイズ(KB)
このサイズ超は「無効」
無効の場合は、<#ErrMailJob>が「0」であっても、「2」を指定したものと同じ処理になります。
#TenpuTotalSizeLmt
添付ファイル全体の最大サイズ(KB)
このサイズ超は「無効」
#TenpuCntLmt
添付ファイルの最大個数
この個数超は「無効」
#JpgSizeLmt
Jpgファイルの1個あたりの最大サイズ(KB)
このサイズ超は「無効」
複数個の画像ファイルの場合、どれかひとつのファイルでもこの値を超えたらすべての画像を「無効」にします。
#BmpSizeLmt
Bmpファイルの1個あたりの最大サイズ(KB)
このサイズ超は「無効」
複数個の画像ファイルの場合、どれかひとつのファイルでもこの値を超えたらすべての画像を「無効」にします。
◆そのまま配信する拡張子
 指定サイズ(KB)以下ならそのまま配信する添付ファイルの拡張子の設定
 配列の形式でいくつでも指定できます(n=1〜Max)。その次の$TenpuCheckExt[Max+1]は必ず"*"にしておきます。
 "*"はその他の拡張子全てが対象となり、#TenpuSizeLmt[Max+1]が0ならその他の拡張子は添付禁止となり、0以上の値(KB)の場合はそのサイズ以下の添付ファイルは通します。
$TenpuCheckName[n]
拡張子名 エラーメッセージなどへの挿入にも使用します
「<$TenpuCheckName[n]>ファイルは・・・」となる。
$TenpuCheckExt[n]
拡張子([Max+1]は"*"とすること)
#TenpuSizeLmt[n]
添付ファイルの最大サイズ(KB)。このサイズ超は「無効」
サイズ制限をしない場合は,この値を可能な限り大きくしてください。
◆「縮小専用」個別の設定
 Jpg,Bmpファイルの圧縮の設定
「縮小専用」は、その名のとおり拡大はしません。元の画像が下記サイズより小さい場合はそのままです。Bmpファイルは、縮小と同時にJpg形式に変換されます。
$JpgConvPath
「縮小専用V1.5」のあるフォルダ名。"\"はマクロの仕様から2個続けて入力して下さい。さらに末尾に"\\"を付加してください。"shukusen.exe"はつけないで下さい。
例 : "C\\Program Files\\shukusen\\"
※ユーザー設定メールを修正する場合は"\"はひとつにしてください。
#JpgSizeMax
JpgまたはBmpのファイルサイズがこの値(KB)以上なら、このサイズまで縮小。
縮小したくない場合は、この値を可能な限り大きくしてください。
#JpgPixelMax
JpgまたはBmpの横方向の画像サイズがこの値(Pixel)以上なら、このPixelまで縮小
$JpgAddName
画像ファイル縮小後にファイル名の頭に付加する名前
元の画像が十分小さくて縮小しなかった場合にはつきません。
 
■ログの説明
 <$LogFolder>内に次のデータがメール形式で保存されています。各メールには管理用のヘッダが埋め込まれていますから,これらを変更しないでください。

◆送信記録
 「<$MlName> 送信記録 yyyy/mm/dd・・」というタイトルで1日分の送信記録をメール形式で保存しています。日付が変わるとその時点のユーザー設定値と参加メンバーのアドレス一覧を末尾に追加します。
 メールが1通もない場合でも、その他のメールの処理があれば記録として残します。また、<#ReportLog=1 or 2>の場合は管理者へこの内容をメール送信します。

◆メール連番
 
「<$MlName> メール連番 yyyymmdd」というタイトルのメール形式で、CCヘッダに連番を保存しています。通常は何もする必要はありません。
 連番を変更する場合は、このメールのCCヘッダを変更してください。次の配信メールから「この値+1」になります。連番を1からつけ直す場合は、このメールを削除してください。

◆ユーザー設定値
 マクロの先頭にある、ユーザーが任意に設定可能な値を「<$MlName>ユーザー設定値 yyyymmdd」というタイトルのメール形式で保存しています。
 マクロを一度実行すればこのメールが自動的に作成されます。
 ユーザー設定値を変更する場合は、(マクロの先頭部分ではなく)このメールの内容を編集してください。(基幹変数についてはマクロでの修正のみとなります)
 編集する場合、左辺と<=>までは変更しないでください。右辺は、文字変数は<=>の次から改行の手前までが値になりますので、空白も意味を持ちます。<">で囲む必要はありません。自動的に改行されてしまうような長い文字列は1行目のみ有効で、2行目以降は無視します。
 数値変数の右辺には空白を入れないでください。
 この値を一括して初期化したい場合は、このメールを削除してください。ユーザー設定値は次に実行したときにマクロの先頭部分に書いてある値になり、このメールも自動的に作成します。

◆ウェルカムメッセージ
 「[<$MlName>]メーリングリストへようこそ」というタイトルのメールがウェルカムメッセージになります。このメールはマクロを実行すれば自動的に作成されます。
 このメールのタイトルと本文を自由に編集しておいてください。なお、管理用のヘッダが埋め込まれていますから、ヘッダは編集しないでください。
 
■コマンドメールの説明
 コマンドメールを送信できるのは、<#CmdMode=1>の場合は管理責任者。<#CmdMode=2>の場合は管理責任者と補助管理者です。
◆コマンド送信先と処理結果の返信
 コマンドメールの宛先は<$CmdAccount>と<#CmdAccount>で指定されたアドレスになります。
 コマンドの受信後、その処理結果をメールで返信します。返信は、コマンドメールを送信できる管理者全てに返します。

◆タイトルは任意
 タイトルは自由です。コマンド処理後の返信メールにはタイトル先頭に<$CmdTitle>で指定した文字を付加します。

◆コマンドの指定方法
 本文先頭の基本3行で指定します。各行は左寄せ、空白行を入れないで下さい。大文字小文字も区別します。
1行目:ML名 <$MlName>で指定したML名
2行目:パスワード <$CmdPassword>で指定したパスワード
3行目:コマンド(半角小文字で)

 以下、3行目のコマンド別の説明です
help コマンドの記述方法を返します。
getlog 当日のログとユーザー設定値、アドレスリストを一式返します。
stop ML配信一時停止。次に<start>コマンドを受け取るまでMLの配信をしません。なお、停止中でもコマンドメールは受け付けます。
start ML配信再開
setvar ユーザー設定値の変更
例外として、メール連番<#MailNo>も変更できます。
subscribe 参加アドレスの新規登録又は更新。
既に同じアドレスがある場合は内容を更新します。新規登録の場合は、<#SendWelcome=1or2>ならウエルカムメッセージも送信します。
unsubscribe 参加アドレスの削除。
連絡 管理者間の連絡メール。
<#CmdMode=1>の場合、管理責任者からの送信は補助管理者にも配信しますが、補助管理者はこの値が2でないと送信はできません。

4行目以降(サブコマンド)
  <setvar>,<subscribe>,<unsubscribe>,<連絡>のみ(何行でも指定可)
setvar <左辺>=<右辺>の形式で指定。
先頭の$や#も指定して下さい。文字列は""は不要
subscribe <名前>,<アドレス>,<備考1>,<備考7>,<備考8>
","区切りで指定してください。
備考nは右から順に省略可能です。
unsubscribe <アドレス>
連絡 任意。本文、添付ファイルともにそのまま転送します。


★コマンド例(setvar)★
MlTest
Pass999
setvar
#SendToBcc=1
$Memo1=メモ
#MailNo=100

★コマンド例2(subscribe)★
MlTest
Pass999
subscribe
名前,namae@honyahonya
dare,darekana@honyahonya,dokokana,,*

★コマンド例3(unsubscribe)★
MlTest
Pass999
unsubscribe
namae@honyahonya

★コマンド例4(連絡)★
MlTest
Pass999
連絡
>管理者各位
 コマンドメールでアドレス登録が出来るようになりました。
 詳細は添付ファイルをご覧ください。


※サブコマンド(<連絡>を除く)終了の次に空行を必ず入れて下さい。それ以降の行は無視します。または<eof>で終わって下さい。


■処理フロー
 #RunMode別の処理は、およそ下図のようになります。


 
■補足説明
 ここまでの説明の補足です。とりあえず動かすには(たぶん)不要かと思いますので読み飛ばしてください。 
◆参加者アドレスの最大数
 秀丸メールの文字列変数の領域サイズから、このマクロで使用できるアドレス数の限界が来るようです。
 試しにやってみますと、300人までは動きましたが,それ以上は分かりません。ただし、100人程度でもコマンドメールでアドレス登録をすると、ガベージコレクションを行うことがあるようなので、そこで処理が待たされます。この場合でも時間はかかりますが、継続動作は可能です。
 このため、定期受信での時間間隔よりメールが届くのがかなり遅い場合は,これが原因か通信回線の問題だと思います。
◆アカウントの別名使用の場合
 別名アドレスを使った場合、<Return-Path>ヘッダは秀丸メールがメインのアドレスを入れて送信するようですから、「宛先不明」などのプロバイダが返してくるメールはメインのアドレスに届きます。これはコマンドのアドレスでも同様です。
◆コマンド用アドレスは専用に
 コマンド用アドレスはコマンド専用にしてください。届いたメールは送信元がどこであれ即時処理します。MLのように、未登録アドレスからのメールをしばらくそのままにする機能はありません。
◆<#SendToBcc=0>での配信について
 ToヘッダにはMLのアドレスを入れ、Bccヘッダに参加者の(実際に配信する)アドレスを入れて送信します。この場合、ML宛に必ず一通のメールが戻ってきますが、このメールは不要なのでゴミ箱に捨ててしまいます。
◆<#SendKeitai>について
 携帯ドメインは、現在確認できたものを入れていますが、ドメインが増加した場合はマクロの更新作業が必要です。
◆<$CmdPassword>について
 パスワードはML名や3行目のコマンドとは大きく異なる個性的なものにして下さい。これらと似ているとうまく処理できないことがあります。
 また、コマンドの返信メールは、安全のためパスワード行を可能な限り消して返しますから、パスワード不一致などのコマンドエラーであってもパスワード行はたぶん消えています。
◆コマンドメールによるアドレス登録/削除
 管理責任者のアドレスは、コマンドメールでの登録/更新/削除はできません。PCを直接操作して更新して下さい。
 また、補助管理者は補助管理者データを一般参加者に変更することはできません。(間違い防止のため)
 アドレス帳を更新する際、バックアップファイルを作ってから元のアドレス帳を更新します。バックアップファイルは、「AdrBook-mlmodoc・・・・.bak」というファイル名で、10日以上経過すると自動的に削除します。また、その処理もログに残します。
◆ウエルカムメッセージ
 ウエルカムメッセージは、ML配信のアドレスから送信します(Bccで管理責任者と補助管理者にも)。もし登録アドレスの間違い等で不達メールが返ってきた場合は、MLのアドレスでの<#SpamMailJob>による処理になります。
 なお、管理用PCでアドレス帳に直接登録した場合は、このメッセージは送信しません。
◆<$LogFolder>内の管理用メール
 メール連番、ユーザー設定値とウェルカムメッセージの3メールは、日付が変わったらリフレッシュするようにしています。通常の、日付の逆順表示にしておけば、当該メールが上位に並ぶため管理が容易になります。また、秀丸メールのフォルダごとの設定も使いやすくなると思います。
◆複数のMLを運営する方法
 このマクロはひとつのMLしか運営できませんが、設定を変えたマクロファイルを別々に用意すれば、複数のMLを運営できます。そして、「マクロを連続実行するマクロ」を用意して、秀丸メールの、例えば定期受信後の自動起動にここで作った「マクロを連続実行するマクロ」を指定すれば実現できます。
 この、連続実行するマクロには、
 execmacro "マクロA";
 execmacro "マクロB";
 などと書いて下さい。
◆簡便にテストする方法
 本番前に仮のメールを作って簡単にテストしたいことがあります。<$RecvFolder>に入っているメールは、宛先や送信元のアドレスをチェックしませんから、メールの中身だけテストしたい場合は<$RecvFolder>に適当なメールを入れておき、マクロを手動起動すれば簡単にテストすることが出来ます。もちろん<#RunMode=0>で。
 アドレスも厳密にテストしたい場合は"受信"フォルダに入れておけばテスト出来ます。

 
■動作確認環境

 ・自作PC Celeron 420 1.6GHz   1GB Memory
 ・WindowsXP HomeEdition SP3
 ・秀丸メール V5.75
 ・縮小専用(shukusen.exe)V1.5

 

 
■改版履歴
V2.10 2012. 4.18 ●HtmlメールのHtml部分を秀丸メールの設定にかかわらず削除するよう修正
●「winmail.dat」(outlookが送信時に添付してくるファイル)を自動的に削除するよう修正
 秀丸メールV5.63以降なら「winmail.dat」に含まれている添付ファイルを抽出する設定にすることで、画像ファイル等を処理することが可能
●コマンドメールの一部の処理で、秀丸メールがV5.63以降の場合にうまく動作しない箇所を秀丸メールのバージョンに依らず動作するよう修正。
V2.02 2010. 9.18 ●<#CmdMode=0>の場合で、送信前の無駄な処理を省略(高速化)
●Welcomeメッセージメールについて、<#SendWelcome>の値によらず日付が変わったときリフレッシュするよう修正
V2.01 2010. 9.17 ●<#CmdMode=0>の時のメール送信のバグ修正 
V2.0 2010. 9.15 ●コマンドメール機能追加
 参加アドレスの登録削除、ユーザー設定値の変更などを管理者からのメール送信でも可能にした
●Welcomeメッセージ機能の追加
 コマンドメールで参加者のアドレス登録を行った場合はWelcomeメッセージを送信できるようにした
●投稿者アドレスを隠して配信する機能を追加
●メールに挿入するエラーメッセージなどを整理・簡略化
●起動時の携帯ドメインのチェックを必要最小限にして起動の高速化
●アドレス帳の読込みで、アドレス帳ファイルを直接読込むよう変更
●送信記録の報告メール送信などもログ保存するようにした。また、記録内容を一部修正。
V1.54 2010. 8.13 ●フォルダ名の指定を基幹変数(マクロでのみ修正)に変更
●<#AutoReplyCheck>変数を取りやめ(処理のバリエーションがないため。チェック内容は変更なし)
●<#ErrMailJob>で「1」の処理(投稿者に返信)を取りやめ。転送は管理者「2」「3」のみに。
●起動時の高速化
 <#SendKeita=0>のときは、携帯ドメインチェックを省略した
●携帯ドメインチェックでの一部不具合の修正
●ML宛メールのアドレスを比較するとき宛先を小文字に変換して比較するよう修正(宛先が大文字でも届くメールがあるため)
V1.53 2010. 7.31 ●送信記録を管理者に送信する時にメールの日付を現在時刻になるよう修正
●補助管理者がいないときの<#RunMode=0>の時の処理途中での表示の間違いを修正
V1.52 2010. 6.17 ●送信元偽装メールのチェックを取りやめ
 別名で送信した場合に迷惑メールになってしまうためチェックをとりやめ。
V1.51 2010. 6.16 ●送信元偽装メールかどうかのチェックルーチンを見直し
V1.50 2010. 6.15 ●アカウントの別名アドレスを使用可能に。
 #MlAccount変数追加。同時に、同一アカウントで複数のMLを運営可能に。(マクロは複数個用意)
●配信時の携帯対応(アドレス別送信の場合のみ)。
 携帯ドメインには<From>ヘッダにMLアドレスを入れて配信も選択可能に。(携帯からの返信が容易)
●添付ファイルの拡張子チェックの仕様拡充。
 その他の拡張子のサイズ制限を可能に。(従来は通らなかった)
●基幹変数をマクロでのみ修正可能なよう変更。
 実行を開始してから値を読み込んでも意味がない主要な変数はマクロ内での修正のみにしました。
●配信のみのアドレス指定を追加。<S>をつけると投稿不可、配信のみとなる。
●エラー返信やログ送信時に送信先が携帯利用の場合の安全性向上(不用意な返信対策)。Fromヘッダに管理責任者のアドレスを入れる。ただし、一人でも携帯利用なら全員のFromヘッダが差し替わる。
●日付が変わったらメール連番とユーザ設定値ファイルをリフレッシュするようにした。(自動削除対策)
-----
ブログに若干の説明を書きましたのでこちらも参考にしてください。
V1.43 2010. 5.30 ●ユーザー設定値が一部の変数で変更不可だったバグを修正。同時に、ユーザー設定値が実行ごとに毎回更新されていたバグも修正。
●次期バージョン用埋込ヘッダの一部修正。
V1.42 2010. 5.20 ●配信するときの送信元アドレス表示をマクロ中のML名($MlName)に変更。(従来はアカウントプロパティ中の名前を引用)
●添付ファイルの拡張子の文字数を1文字から対応に。
●添付ファイルの拡張子が"JPEG"の場合、サイズ縮小後のエラーチェックのバグ修正。
●添付ファイルチェックルーチンで、飛び先がなかったバグの修正。
●このマニュアルの「名称、アカウントなど」の変数名の説明が消えてしまっていたのを復活。
V1.41 2009. 9.12 ●V1.4で新設の変数の初期化と既存変数の初期化の不具合修正(当該変数の定義行を削除することでマクロ先頭の値になるよう修正)
V1.4  2009. 9. 5  ●メールタイトルのML名重複表示を消す機能を追加
●メールの連番表示で桁数固定機能を追加
●管理者報告メールの署名(フッター)を追加
●MLアカウントのプロパティのうち、主要な項目を強制的に設定及び必要項目は元に戻すように機能修正 
V1.3 2009. 4.19 ●ユーザー設定値のファイル(メール形式)化
 設定値の変更は当該メールを編集する方法に変更
 (初期値は従来どおりマクロに直接記述)
●休止中アドレスの指定を追加
●開封確認ヘッダ削除がうまく動作しなかったための対策追加。
●変数名の一部変更
●その他細部の修正
V1.2 2008.12. 7 ●迷惑メールや自動返信チェックをさらに(少し)追加。
●迷惑メールをエラーメールから分離し、単独のフォルダーやタイトルなどを追加。
●送信ログの保存内容を更新。迷惑メールや無関係メールなど、配信しなかったメールの処理もログに保存するよう変更。
●変数名の一部変更
V1.1 2008.11.22 ●実行モードの「管理者確認モード」機能の削除
●SPAMメール対策を(少し)追加。宛先チェックの改善(一部バグ取り)
●1日の通信ログで設定内容をログ送信時の値で通知する方法に変更。同時に、登録日と備考7の表示を追加。また、参加者アドレス表示を人数にかかわらず全項目表示に変更。
●<#MailStoreDays>変数を<#OtherMailCheck>に変更&機能追加
●<#BodyEndCut>変数を<#MailCutEnd>に変更&機能追加
●変数名の変更(機能変更はなし)
<$RecvAccount> → <$MlAccount>など
V1.0 2007. 7.28 V0.9993を格上げ 正式公開版
V0.9993 2007. 6.30 いちおう完成版
V0.999 2007. 5.30 本文先頭に投稿者データを挿入可能に
V0.997 2007. 5.16 一部のメールが送信記録に残らないバグを修正(したつもり)
V0.996 2007. 5.11 送信エラーなどで配信予定メールが留まってしまう問題を秀丸メールの機能アップ(秀まるおさんにはお世話になりました)とマクロで対応。
V0.93 2007. 4.26  いちおう動作するバージョン
 

 
■終わりに

 質問などがありましたら、DIY館Blogにこのマクロ専用の窓口を作りましたので、そちらにお願いします。
 バグがあった場合は出来る限り早く対応したいと思います。

 

【SH工房DIY館】