"Shade検索"Wiki

CGI/一斉メール送信CGI

sendmailパスの設定の説明が間違えていたので、修正しました。(9月5日 管理人)
10件以上の送信リストを編集すると、10件を超えた分が削除されるバグを修正しました。(10月25日 管理人)

kent-webで公開されているPostMailの改造版です。ご使用の場合は、kent-webのCGIスクリプト利用規定をご覧ください。
バグや質問などありましたら、kent-webのサポートではなく、CGI掲示板までお願いします。

一斉メール送信

特徴


PostMailの場合は、不特定多数の閲覧者から主に管理者あてにメール送信するという用途が想定されていますが、この改造版の場合は、サイト管理者が複数の相手にメール送信します。同じ文面のメールを複数の相手に送信したいときに使うCGIです。

同じ内容のメールを複数の相手に送る場合、ふつうならメールソフトで宛先をやCCを複数指定するところですが、そうすると宛先やCCに受信者以外のメールアドレスがずらずら並んでしまいます。かといってBCCを使うと、受信者自身のメールアドレスが表示されないので、これまた具合が悪い。そう思っている人に使ってもらえると思います。

指定したメールリストごとに1件ずつCGIでメール送信するので、受け取ったメールのあて先に受信者以外のメールアドレスがずらずら並ぶということも、受信者自身のアドレスがないということもありません。

おまけ機能として、指定した文字列をメール受信者それぞれの名前に置き換えることができます。たとえば、「<名前>」という文字列をメールリストの受信者名に置き換えるように指定することができます。

例: <名前>さん、こんにちは → 佐藤さん、こんにちは
  • サンプル
  • ダウンロード mails.zip
    サンプルのパスワードはguestです。サンプルなので、メールリストの編集とメール送信はできません。

使用法


ダウンロードしたファイルを解凍すると、

 init.cgi
 index.cgi
 postmail.cgi
 index.htm
 tmp_err2.html
 tmp_thx.html
 jcode.pl
 mimew.pl

というファイルができるはずです。

CGIファイルを使用環境に合わせて少し修正する必要があります。
まず、index.cgi、postmail.cgi、1行目の

 #!/usr/local/bin/perl

をプロバイダで定められたPerlへのパスに変更します。
次に init.cgi 19行目の

 $mailprog = '/usr/lib/sendmail';

を、プロバイダに合わせて変更します。これは、あとでCGIを実行し、ブラウザから設定画面で変更することもできます。

ファイルのアップロード


FTPソフトで、説明.txtをのぞくすべてのファイルをアップロードします。
index.cgi postmail.cgiのパーミッションをCGIとして実行できるパーミッションに変更します。
サーバーによっていろいろ違うらしいですが、うちの場合は755でした。

 mails ┬ index.cgi(755)
       ├ postmail.cgi (755)
       ├ init.cgi (644)
       ├ index.htm (644)
       ├ tmp_err2.html (644)
       ├ tmp_thx.html (644)
       ├ jcode.pl (644)
       └ mimew.pl (644)

CGIを実行する


index.cgiを呼び出してみます。mailsというディレクトリに入れているなら、
http://〜〜/mails/index.cgi あるいは http://〜〜/mails/
で呼び出せるはずです。
初めてアクセスする場合は、管理者用パスワードの設定フォームが出るので、ここでパスワードを決めてください。(2回目以降のアクセスでは、最初にログイン画面が出ます。)
最初のアクセスの場合は、続いて設定画面が表示されます。変更の必要があれば変更して「修正」ボタンを押します。置き換え文字列を追加したい場合は、$replaceの内容を編集してください。
設定フォーム下部の「チェックモード」ボタンを押すと、設定をチェックします。

設定が終わったら「メールフォーム」ボタンを押してメールフォームに移動してください。
「件名」「メッセージ」内で変換文字列を使うと、メール送信時に各リスト内の文字列に置き換えられます。

ローカルメール送信


スパムメール送信を防ぐため、サーバーによっては一度に複数のメールを送信することを制限しているところもあるかもしれません。そのような場合は、サーバーの負担を防ぐため、送信メールリストの上限を問題なく送信できる数に変更しておいてください。このCGIの性質上、できるならWEBサーバーにアップロードするのではなく、ローカル環境で実行するのが、セキュリティの面からも、サーバーの負担を避けるためにも望ましいかもしれません。
とはいっても、Windows用のActivePerlにはsendmailモジュールは標準では含まれていないので、そのままではメール送信することはできません。しかし、ローカルサーバからメール送信する方法がいろいろあるようです。kent-webにわかりやすい解説がありました。

疑似sendmailソフトを使う方法が割と簡単でした。
ローカルでCGIが動かせて、この一斉メール送信CGIを使ってみようかという方は、是非ローカルからのメール送信にチャレンジされることをお勧めします。

入力が終わったら「送信」ボタンを押してください。プレビュー画面が表示されるので、「この内容で送信」ボタンを押すと送信されます。
メールフォームで、「このアドレスへ控えを送る」をチェックしていると、送信者のメールアドレスをBCCに追加します。つまり、送信先に送ったのと同じメールが送信者へも送られます。10件の相手に送る場合は、10件のメールが控えとして送られるのでご注意ください。

ありがとうございます. 送信は正常に完了しました.と表示されたら、送信完了です。

メールリストファイル


メールリストを記録するmail_list.cgiについてですが、
フォームから編集してもいいのですが、毎回違うリストに送るので、いちいちフォームから入力するのはかったるいという場合は、ExelなどでCSVファイル(区切り文字はカンマにする)として書き出し、拡張子を.cgiに変更してサーバーにアップするということもできます。拡張子を.cgiにするのは、.csvのままだと、WEBブラウザなどで mail_list.csvファイルに直接アクセスされて、中身が読まれてしまう恐れがあるからです。



Plugin not found.


>>2010/02/25 01:26:00更新>>