よくメールマガジンサイト(携帯版)で見かけるのですが、空メールを送信して登録、解除できるサイトがあります。このような仕組みを是非CGIで実現してみたいとおもっていますがこのようなものはCGIで実現可能なのでしょうか?今回は、メールが飛んできたらログファイルにそのメールアドレスを書き込むと言うものだけでかんがえています。
もしできるとするならは、
1.空メールが送られてくるたびにCGIを起動させる方法
2.空メールのヘッダーを読み込みそれを送信元アドレス取得する方法
この2点が質問ないようです。またこれ以外にも他の方法はありますか?
ちなみに僕のサーバー環境はrimネットのホスティングサービスを利用していいます。
1の質問でどうやら.forwardのなかに"|exec /home/user/script"を記述して
#!/usr/local/bin/perl
while (<STDIN>){処理}
とすれば/home/user/scriptはメールを送られてくるたび実行されるらしいのですがうまくいきませんでした。
この山はどうしても越えたいのでどなたかご教授よろしくおねがいします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
こんな風に記述すれば良いのでは.
ただし、From: が複数行になっている場合は考慮していません
-->
#!/usr/local/bin/perl
# 多分、フルパスで書いたほうが安全だと思います.
$mail = "/..../data/mail.log";
#ここらへんにメールアドレスのヘッターを読み込み送信元メールアドレスを
#取得する記述??
# メール本体
@text = <STDIN>;
$line="junk";
while ((@text) && ($line ne ""))
{
$line = shift(@text);
chomp($line);
if ($line =~ /^From: /)
{
($tmp, $from) = split(":", $line, 2);
}
}
if(!open(OUT,">>$mail"))
{print 'ファイルへの書込みができませんでした。',"\n"; exit;}
print OUT "取得したメールアドレス,$from\n";
close(OUT);
exit;
<--
$from に From: の右側の情報が入ります.
メールアドレス以外の情報(名前など)がある場合は、
そこからメールアドレスのみを抽出する必要がありますね.
No.2
- 回答日時:
~/.forward の該当部分と、
それで起動されるスクリプトを見せていただかないと
何ともいえないのですが、該当の処理は可能ですよ。
/etc/aliases などでやるのが私は好きですが、
ホスティングサービスじゃぁしょうがないですね。
あ、~/.forward やスクリプトのパーミッションはOKですよね。
あと、~/ 自体も。
perlのパスなんかは大丈夫でしょうか。
とりあえずそっちは、単体でテストできますよね。
それはどうでしたか?
この回答への補足
早速のお返事有難うございます。
まず/.forwardのパーミッションは644にしています。
~/は755です。
perlのパスは/usr/local/bin/perlで確認OKです。
起動させるスクリプトは、
【mail.cgi】 ---------------------------------------
#!/usr/local/bin/perl
$mail = "./data/mail.log";
print "Content-type:text/html\n\n";
#ここらへんにメールアドレスのヘッターを読み込み送信元メールアドレスを
#取得する記述??
if(!open(OUT,">>$mail"))
{print 'ファイルへの書込みができませんでした。',"\n"; exit;}
print OUT "取得したメールアドレス,¥n";
close(IN);
exit
------------------------------------------------------------------
こんな感じなんですが、~/.forward に関係する記述と、送られてきたメール
内容のヘッターからメールアドレスを取得する方法がわかりません。
とりあえずcgiのパーミッションは705でmail.logは606です。
No.1
- 回答日時:
えっと、それはCGIじゃなくて単なるスクリプトのような
.forwardはsendmail系の設定です。
あなたが書いてる設定だと
メールが送られてくるとパイプを開いて/home/user/scriptていう
プログラムにメールのデータを流し込むって感じになってます。
メールのフォーマットについては・・・覚えてないっす検索してみてくだささい(^^;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Exchangeを使用したメール送信...
-
C#のメール送信時のエラーについて
-
VBAでoutlook365が起動しません。
-
例外処理のフローチャートの記...
-
エクセルVBAでシートモジュール...
-
Excel VBAで、ユーザーフォーム...
-
VBAで別モジュールへの変数の受...
-
グラフのX,Y座標を取得したい
-
Cからシェルを起動し返り値をハ...
-
VBAで旧字体を異字体に一括で変...
-
acwzlibとは?
-
Perl モジュールのアンインスト...
-
ユーザー定義関数に#NAME?が返...
-
ExcelVBA AddinでOnAction
-
YAMLについて
-
VBSがコンパイルエラーになりま...
-
VBA ユーザーフォーム Image1 ...
-
CPANモジュール取得におけるmak...
-
LCD ディスプレイを Raspberry ...
-
【vba】フォームに書いてあ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでoutlook365が起動しません。
-
VBAでsmtp認証をするには?
-
Net::SMTPでメールを送信したい...
-
VBScriptで、メールの送信をし...
-
CDO.Messageを使ったVBScript
-
Perl メール 文字化け
-
さくらインターネットでの添付...
-
Enterキーを押しても送信しない...
-
メーリングリストへ登録するCGI
-
perl 自動返信メールプログラム...
-
空メールシステムについて
-
C#のメール送信時のエラーについて
-
ウィンドウズ上で動くメールサ...
-
LotusScript メール作成方法が...
-
リンクをクリックするだけでC...
-
javamailでメール送信ができません
-
添付ファイルをつけてメールを送る
-
server errorで困ってます。
-
フォームメールを外人に送る方...
-
自作CGI(メールフォーム)の...
おすすめ情報