Web-UP CGIを駆使してWebサイトの運営効果を思いっきり上げる!

ホーム > CGI配布コーナー > One-2-One DM Sender お問い合わせ

One-2-One DM Sender


・One-2-One DM Sender とは?
・One-2-One DM Sender の特徴
・One-2-One DM Sender 設置法



One-2-One DM Sender とは?


One-2-One DM Sender は通常のメルマガ配信CGIとは違います。
SOHOや中小企業の商用サイトが本格的なパーソナライズマーケティングを安価に実施するために設計・制作された、パーソナライズマーケティング専用CGIスクリプトです。
パーソナライズマーケティングの概要については、こちらをご覧下さい。

個人名や会社名など、メール文面に差し込む項目を無制限に設定できるほか、配信する文面を何パターンでも設定できるため、顧客属性に合わせて最適な情報提供をしつつ、企業と顧客の感情的な繋がりを維持・強化していくことが可能です。数万件以上の一斉送信にも分割送信で対応していますので、事実上同時送信数の制限はありません。

One-2-One DM Sender はシェアウェア(21,000円)の多機能Eメール配信エンジンCGIスクリプトです。
(Perl:バージョン5.004以上、Sendmail必須)

(サンプル画面:新しいウィンドウが開きます)

CGIの設置が苦手という方には、メルマガ:なるほど、これならわかる!超初心者の為のCGI設置講座がお勧めです!
現在、BBSでの設置サポートは休止中です。


実績: 2003/1/15:雑貨系ネットショップ様のご好意で過去の購買客2,000名強にDM配信を実験。
用意した文面9パターンを自動配信。結果、34.4%のリピーターに再度購入してもらうことに成功。

実績: One-2-One DM Senderをご利用いただいているWEBサイト様
・ マーケティングテクノロジー(株)
インターネットを利用した市場調査及びプロモーションの専門企業です。

ご利用頂いたご感想:1通1通に名前やID等を差し込みでき、かつ使い勝手が他のどのプログラムより良いですね。
シンプルだけど高機能。さらに望むとすれば、メール原稿のパターンや、送信ファイルをブラウザ上から選択できると良いですね。
でもセキュリティを考えるとこれで良いのかも。


[ 更新履歴 ]
・2003/01/03 v1.02 - 公開
・2003/02/15 v1.03 - メールヘッダの記述を改良
・2003/08/27 v1.03b - 一部ロジックを改良、動作安定度を向上




One-2-One DM Sender の特徴


One-2-One DM Sender は以下の特徴を持っています。

  • 現在情報が蓄積されているCSVファイルにわずかな加工をするだけで、One-2-One DM Sender にそのまま利用できます。
  • 文面に差し込みする情報(個人名、会社名、商品名、お買い上げ額など)をいくつでも設定できます。
  • 複数の文面を用意し、CSVファイルの条件(文章番号)によって文面を切り替えながら同時送信することができます。
  • 同時送信できる件数には、理論上制限はありません。
  • サーバー能力や時間帯などによって、一度に送信する件数やインターバル秒数を自由に設定できます。
  • パスワードによる認証の他、管理者の利用プロバイダ・利用ブラウザを登録することによって、それ以外の利用を禁止することができます。
  • CSVファイルにおいて不正なメールアドレス(全角英数、@など)があると送信前に警告表示し、かつ自動的に修復して送信します。
  • CSVファイルにおいて重複しているメールアドレスがあった場合、送信前に警告表示します。
  • CSVファイルにおいて存在しないメール文面ファイルを指定していたときも送信前に警告表示します。
  • サーバーによるタイムアウトなど、なんらかの原因によって万が一送信がストップしてしまっても、その時点までの送信件数と送信できなかったメールアドレスが一時ファイルに記録されているので、あとから容易に確認することができます。これによりCSVファイルのどこから送信を再開すればよいのかがすぐにわかります。
  • 二重操作を防ぐファイルロック機構。
  • CSVファイルやメール文面に半角カタカナが入力されていても自動的に全角カタカナへ変換します。
  • メール文面は任意の文字数で自動改行するように設定できます。
  • メールの件名をBase64エンコードして文字化けを防ぎます。
  • 送信に「名称」を付けることができます。後日この「名称」によってどんな目的のDMだったのかを容易に判別できます。この「名称」は管理者が使うだけのもので、DMの文面に影響することはありません。
  • 送信完了後、送信結果の詳細な情報(送信所要時間、平均処理時間など)を管理者宛にメール通知させることができます。これにより後日でも過去にどのようなDMを配信したのかを推測しやすくします。詳細情報を元に設定条件をチューニングしていくことも可能です。
  • 個人情報漏洩防止の為、送信完了後ブラウザからワンクリックでサーバー上のCSVファイルを削除することができます。
  • One-2-One DM Sender はレンタルサービスではないので、一度設置すればあとは無料でキメ細かなDM配信をすることができます。

▲このページの上に戻る▲



One-2-One DM Sender のお申し込みはこちらから!

One-2-One DM Sender は、スクリプト利用規約に同意いただいた上で、
シェアウェア登録よりお申し込み下さい。


▲このページの上に戻る▲



One-2-One DM Sender 設置法


CGIの設置が初めてという方はCGI初心者のためのCGI設置講座もご活用下さい。
このページの設置法を読んでみて、どうしてもご自分では設置できないという方は有償サービスのCGI設置代行をご検討下さい。
全てに答えられることは保証できませんが、もしお困りのことやご意見などありましたらBBSにご投稿ください。

One-2-One DM Sender をダウンロードしたら、解凍ソフトで解凍します。
ファイルを解凍すると「dmsender」フォルダ内に以下のファイルが展開されます。

sender.cgi
conf.cgi
jcode.pl
mimew.pl
dataフォルダ
mailフォルダ
lockフォルダ
mime_pls202フォルダ

lockフォルダの中にsend.lokというファイルが入っていますが、これはファイルロック用のファイルですのでこのままアップロードして下さい。
dataフォルダの中にもいくつかのファイルが入っていますがこれらも後ほどそのまま全てアップロードします。
mailフォルダの中にはサンプルのメール文面ファイルが入っています。
jcode.pl歌代 和正さんのPerlライブラリで再配布が許可されています。歌代さんに心から感謝いたします。
mimew.pl生田 昇さんのPerlライブラリで再配布が許可されています。生田さんにも心から感謝いたします。
mime_pls202フォルダの中にはmimew.plのドキュメント一覧が含まれています。アップロードの必要はありません。

まずエディタsender.cgi を開き、1行目のPerlのパスをプロバイダ指定のものに変更します。
sender.cgiconf.cgi は文字コードをEUCで記述していますのでWindows標準のメモ帳などでは編集できません)
sender.cgi の変更点はこれだけで終りです。主な設定は設定用ファイルのconf.cgi で行います。
次にエディタでconf.cgi を開き、下記の設定を行います。

#------------#
#   基本設定  #
#------------#


# 管理者名
$admin_name = 'Web-UP';


# 管理者メールアドレス
$admin_mail = 'info@web-up.cside.biz';


# 管理者用パスワード(半角英数字) 必ず変更して下さい
$pass = '0000';


# 指定したホスト以外からのスクリプト呼び出しを禁止する場合に設定して下さい
# ダイアルアップで接続しているかたは接続するたびにアクセスポイントが変わりますので、
# 何回か接続してみて変化しない部分を設定して下さい
# 未設定だと無効となります
# $your_host = 'ore.da.jp';などの形で
$your_host = 'ore.da.jp';


# 指定したブラウザ以外からのスクリプト呼び出しを禁止する場合に設定して下さい
# 未設定だと無効となります
# $yourua = 'Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)';などの形で
$your_ua = 'Mozilla/4.0 (compatible; MSIE 5.0; Windows 98; DigExt)';


# sendmail部分のパスを記入
$sendmail = '/usr/sbin/sendmail';


# CSVデータのメールアドレスの重複チェックをするなら1,しないなら0
$adr_chk = 1;


# CSVデータのメールアドレスに不備(全角英数など)があったときに自動修正するなら1,しないなら0
$adr_crc = 1;


# 送信結果を管理者にメールで通知するなら1,しないなら0
$result = 1;


# スクリプトの名称(とくに変更する必要はありません)
$sc_name = 'sender.cgi';


# ロックディレクトリ名(とくに変更する必要はありません)
$lock_dir = './lock/';


# ロックファイル名(とくに変更する必要はありません)
$lock_file = 'send.lok';


# 一時ファイル(とくに変更する必要はありません)
$tmp_file = './tmp.dat';




#--------------------------#
#   メール送信に関する設定     #
#--------------------------#


# [注意] 下の $plus と $wait は、サーバー能力や送信する時間帯などによってベストな設定は変わってきます
#送信に多少時間がかかっても送信の確実性を増す為に余裕のある設定にしておくことをお勧めします
#余裕のある設定とは $plus は30前後 $wait は3以上を指します
#サーバーの負荷状況を確認できる環境であれば様子を見ながら徐々に調節して下さい


# 1回に送信する件数(30前後を推奨)
# この数値を「大きく」するほど送信が早く終わりますがサーバー負荷が大きくなるので注意して下さい
$plus = 30;


# インターバル 1回の送信が終わったら処理を一時中断する秒数(3秒程度を推奨)
# インターバルとは、上の$plus で設定した件数を送信後、処理を一時中断する秒数のことです
# この数値を「小さく」するほど送信が早く終わりますがサーバー負荷が大きくなるので注意して下さい
$wait = 3;


# 差し込み機能を使うなら1,使わないなら0
$change = 1;


# メールファイル
# $mail_file[0]が標準のメールファイルとなります
# 複数のメールファイルを使わない場合は$mail_file[0]のみの設定でOKです
# 複数のメールファイルを使う場合は行頭の「#」を削除して$mail_file[番号]の番号部分を1づつ増やして下さい
# いくつでも設定できます
$mail_file[0] = './mail/mail0.txt';
#$mail_file[1] = './mail/mail1.txt';
#$mail_file[2] = './mail/mail2.txt';


# メール送信時に自動的に改行する場合その文字数
# 文字数は半角換算、70程度を推奨 0にすると自動改行しません
$auto_wrap = 70;




#---------------------------#
#   CSVファイルに関する設定     #
#---------------------------#


# CSVファイル
# データ漏洩が懸念される場合はメール送信が終わったらサーバーからCSVファイルを削除するか、
# 拡張子を[.cgi]にして下さい その場合実際のファイルの拡張子も[.cgi]にしてパーミッションを666または606にします
$csv_file = './data/data.csv';


# CSVファイルの分割キー(タブ区切りの場合は半角で \t と記入します)
# $split_key に設定した文字がCSVデータ中に含まれていないよう注意して下さい
$split_key = ',';


# CSVファイルの内容 詳しくはこちらをクリック
# 実際のCSVファイルのフィールド(列)位置と対応させて下さい
# 最初の1列目はメールアドレス用に固定となります
# 複数のメールファイルを使う場合は2列目にメール文書番号($mail_file[番号]の番号部分)として下さい
# 文書番号以降が置換対象データとなり基本的に ##文字列## の形で記述して下さい
# 置換する文字列はメール本文中にその文字列があった場合、該当する列のCSVデータと差し替えられます
# 例) ##お名前## 様 ⇒ 山田様 など
@csv_fields = (
'メールアドレス',   # CSVファイル1列目(固定)
'文書番号',      # CSVファイル2列目
'##お名前##',     # CSVファイル3列目
'##会社名##',
'##商品名##'
);

# 複数のメールファイルを使わない場合は2列目から ##文字列## の形で記述して下さい
# 例)
# @csv_fields = (
# 'メールアドレス',  # CSVファイル1列目(固定)
# '##お名前##',   # CSVファイル2列目
# '##会社名##',   # CSVファイル3列目
# '##商品名##'
# );




#--------------------#
#   HTMLに関する設定   #
#--------------------#


# bodyタグ
$body = '<body bgcolor="#FFFFFF" text="#000000" link="#000FF" vlink="#800080">';


# テーブル色(濃)
$tb_bg_col = '#ddddcc';


# テーブル色(薄)
$td_bg_col = '#ffffee';


# エラー画面のタイトル
$error_title = 'エラー';


# エラー時に表示するHTML
# <<EOF;の次の行からEOFの前の行の間で自由に編集して下さい
# ##error## 部分にはエラー内容が差し込まれます

$error_body = <<EOF;
<div align=center>
<font color=#cc0000>(゚∇゚|||)  <font size=+1><b>エラー</b></font>  (゚∇゚|||)</font>
<br><br>
<HR width=50%>
<font color=red>
##error##
</font>
<HR width=50%>
</div>

EOF


ここまで設定できたら一服しましょう (* ̄ー ̄)y-~~~~~~ フ〜



一服が終わったら全ファイルを dmsender ディレクトリごと、FTPソフトでアスキーモードでアップロードします。
その後、下の通りパーミッションを設定します。
FTPソフトは定番のSotaさん作FFFTP(新しいウィンドウが開きます)が使いやすくてオススメです。

<ディレクトリ構成例>
(かっこ内はパーミッション値)
/public_html/-─┼----index.html
        │
        │
        ┼---cgi-bin[755]/---dmsender[755]/---sender.cgi[755]
                                   conf.cgi[644]
                                   jcode.pl[644]
                                   mimew.pl[644]

                                         data [755]/---data.csv[644]
                                                index.html[変更なし]
                                                      .htaccess[変更なし]

                                         mail [755]/---mail0.txt
                                                       mail1.txt

                                          lock [777]/---send.lok[666]

最初は上記のパーミッションに設定して、徐々に各ファイルを

777⇒707
755⇒705
666⇒606
644⇒604


などのようにきつくしていくといいと思います。
あとは設置パス/sender.cgi にアクセスして、conf.cgi で設定したパスワードを入力してログインできればOKです。
実際にDM配信をする際には、テスト送信で複数文書の切り替わりや差し込みの状態を十分に確認してから行って下さい。



#--------------------------------#
#   CSVファイルとメール文面に関して    #
#--------------------------------#


■conf.cgi で設定した@csv_fields の順番 と実際のCSVファイルの列の順番はそれぞれ対応している必要があります。
例えば、@csv_fields が次のように設定されていたとすると、

@csv_fields = (
'メールアドレス',
'文書番号'
'##お名前##',
'##会社名##',
'##商品名##'
);


実際のCSVファイル上では下のような順番になっている必要があります。
差し込み機能を使う場合、CSVファイルの1列目と2列目はメールアドレスと文書番号で固定となります。
1列目 2列目 3列目 4列目 5列目
hoge@foo.ne.jp 0 山田 ○×株式会社 スーパー健康茶
abc@hoge.ne.jp 1 田中 ××商事 ヤセヤセ王

これは@csv_fields と下のように対応しています。
@csv_fields メールアドレス 文書番号 ##お名前## ##会社名## ##商品名##
CSVファイル hoge@foo.ne.jp 0 山田 ○×株式会社 スーパー健康茶
CSVファイル abc@hoge.ne.jp 1 田中 ××商事 ヤセヤセ王



■複数のメール文書を使わない場合は2列目からを置換対象の文字列とします。

@csv_fields = (
'メールアドレス',
'##お名前##',
'##会社名##',
'##商品名##'
);


実際のCSVファイル上では下のようになり、
1列目 2列目 3列目 4列目
hoge@foo.ne.jp 山田 ○×株式会社 スーパー健康茶
abc@hoge.ne.jp 田中 ××商事 ヤセヤセ王

これは@csv_fields と下のように対応しています。
@csv_fields メールアドレス ##お名前## ##会社名## ##商品名##
CSVファイル hoge@foo.ne.jp 山田 ○×株式会社 スーパー健康茶
CSVファイル abc@hoge.ne.jp 田中 ××商事 ヤセヤセ王



■複数のメール文書を使うが差し込み機能は使わないという場合は下のように2列だけになります。
1列目 2列目
hoge@foo.ne.jp 0
abc@hoge.ne.jp 1



■複数のメール文書も差し込み機能も使わない場合は下のように1列だけとなります。
通常のメールマガジンなどの発行に使うだけならこの状態でもOKです。
1列目
hoge@foo.ne.jp
abc@hoge.ne.jp



■CSVファイル2列目の文書番号は、conf.cgi の$mail_file[番号] の番号部分と対応しています。
CSVファイル2列目の文書番号が0であれば$mail_file[0] で指定されているメールファイル、
CSVファイル2列目の文書番号が1であれば$mail_file[1] で指定されているメールファイルがメールの文面として使われることになります。
メールファイル自体の名前は任意のものでかまいません。
例) 「otokuisama.txt」 「imadake.dat」 など。



■メール文面内に@csv_fields の3項目目以降(前述した例では##お名前##など)と同一の文字列があると、その部分にCSVファイルのデータが差し込まれます。

例えば、次のようなメール文面だった場合、
##会社名##  ##お名前##様、この前は##商品名##を買ってくれてサンキュー!

下のように差し込まれます。
○×株式会社  山田様、この前はスーパー健康茶を買ってくれてサンキュー!

@csv_fields に設定する文字列は必ずしも「#」で囲う必要はありませんが、スクリプトの正常動作の為、他の記号は使わない方が無難です。



■メールの件名にはメール文面内の1行目が使われ、本文からは差し引かれた状態になります。

例えば、次のようなメール文面だった場合、
##お名前##様、お元気ですかー?!
##会社名##  ##お名前##様、この前は##商品名##を買ってくれてサンキュー!

下のようなメールになります。
件名:「山田様、お元気ですかー?!」
本文:「○×株式会社  山田様、この前はスーパー健康茶を買ってくれてサンキュー!」



#-------------------------------------#
#   万が一、メール送信が中断してしまったら    #
#-------------------------------------#


サーバーの能力不足や、送信作業をしているときのサーバー負荷、または回線障害や停電など、不測の事態によってメール送信が中断してしまった場合は、FTP接続をしてsender.cgi が設置してあるディレクトリ内のtmp.dat をダウンロードします。
tmp.dat をエディタで開いてみると

1041516547
キャンペーン告知
523
2
uho@foo.ne.jp
boke@hoge.ne.jp

などと記述されています。

一行目の10桁の数字は送信開始時刻を表し、2行目が今回の送信の名称、3行目が処理済み件数、4行目がなんらかの理由で送信できなかったアドレスの数、5行目以降が送信できなかったアドレスとなります。送信開始時刻は一見するとただの数字の羅列にしか見えませんが、これは1970/1/1 0:00:00からの秒数となっています。

整理すると、

送信時刻 1041516547
送信の名称 キャンペーン告知
処理済み件数 523件
送信できなかったアドレス数 523件中2件
送信できなかったアドレス uho@foo.ne.jp
送信できなかったアドレス boke@hoge.ne.jp

となり、送信を再開するにはCSVデータの524行目以降のデータと「uho@foo.ne.jp」と「boke@hoge.ne.jp」のデータを追加したものを新しいCSVファイルとして用意すればよいことになります。

tmp.dat をダウンロードする前にsender.cgi にアクセスして送信を再開してしまうと、新しいデータでtmp.dat が上書きされてしまうのでご注意下さい。

作者が試験した環境(サーバーCPU:PENV-1Ghz、メモリ526MB、サーバー定員140名)では、「1回の送信件数を1000件+インターバル0秒」というかなり厳しい条件で1万件を送信しても100%の送信完了率でしたが、念の為1回の送信件数は30件程度にしておくことをお勧めします。


▲このページの上に戻る▲



「One-2-One DM Sender」の推奨動作環境
- サーバOS
サーバOSはUNIXを前提としています。
- サーバWEBソフト (HTTPD)
HTTPDはApacheを前提としています。
- サーバメールソフト
メールソフトはSendmailを前提としています。
- サーバPerlソフト
Perlについては、Perl5.004以降を前提としています。
(CGIスクリプト開発環境)
当CGIスクリプトは以下の環境で開発しています。
OS : Windows2000
Perl : ActivePerl v5.6.1
HTTPD : Apache HTTP Server 1.3.24




▲このページの上に戻る▲

ホーム > CGI配布コーナー > One-2-One DM Senderお問い合わせ
[an error occurred while processing this directive]