-PR-
締切済み

空メールシステムについて

  • 困ってます
  • 質問No.89135
  • 閲覧数138
  • ありがとう数2
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 25% (4/16)

よくメールマガジンサイト(携帯版)で見かけるのですが、空メールを送信して登録、解除できるサイトがあります。このような仕組みを是非CGIで実現してみたいとおもっていますがこのようなものはCGIで実現可能なのでしょうか?今回は、メールが飛んできたらログファイルにそのメールアドレスを書き込むと言うものだけでかんがえています。
もしできるとするならは、
1.空メールが送られてくるたびにCGIを起動させる方法
2.空メールのヘッダーを読み込みそれを送信元アドレス取得する方法
この2点が質問ないようです。またこれ以外にも他の方法はありますか?

ちなみに僕のサーバー環境はrimネットのホスティングサービスを利用していいます。

1の質問でどうやら.forwardのなかに"|exec /home/user/script"を記述して

#!/usr/local/bin/perl
 while (<STDIN>){処理}
とすれば/home/user/scriptはメールを送られてくるたび実行されるらしいのですがうまくいきませんでした。

この山はどうしても越えたいのでどなたかご教授よろしくおねがいします。
通報する
  • 回答数3
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

回答 (全3件)

  • 回答No.1
レベル10

ベストアンサー率 18% (35/185)

えっと、それはCGIじゃなくて単なるスクリプトのような .forwardはsendmail系の設定です。 あなたが書いてる設定だと メールが送られてくるとパイプを開いて/home/user/scriptていう プログラムにメールのデータを流し込むって感じになってます。 メールのフォーマットについては・・・覚えてないっす検索してみてくだささい(^^;
えっと、それはCGIじゃなくて単なるスクリプトのような
.forwardはsendmail系の設定です。
あなたが書いてる設定だと
メールが送られてくるとパイプを開いて/home/user/scriptていう
プログラムにメールのデータを流し込むって感じになってます。
メールのフォーマットについては・・・覚えてないっす検索してみてくだささい(^^;
関連するQ&A


  • 回答No.2
レベル9

ベストアンサー率 33% (19/56)

~/.forward の該当部分と、 それで起動されるスクリプトを見せていただかないと 何ともいえないのですが、該当の処理は可能ですよ。 /etc/aliases などでやるのが私は好きですが、 ホスティングサービスじゃぁしょうがないですね。 あ、~/.forward やスクリプトのパーミッションはOKですよね。 あと、~/ 自体も。 perlのパスなんかは大丈夫でしょうか。 とり ...続きを読む
~/.forward の該当部分と、
それで起動されるスクリプトを見せていただかないと
何ともいえないのですが、該当の処理は可能ですよ。

/etc/aliases などでやるのが私は好きですが、
ホスティングサービスじゃぁしょうがないですね。

あ、~/.forward やスクリプトのパーミッションはOKですよね。
あと、~/ 自体も。
perlのパスなんかは大丈夫でしょうか。
とりあえずそっちは、単体でテストできますよね。
それはどうでしたか?
補足コメント
katupon

お礼率 25% (4/16)

早速のお返事有難うございます。
まず/.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です。
投稿日時 - 2001-06-12 17:41:19
  • 回答No.3
レベル8

ベストアンサー率 50% (22/44)

こんな風に記述すれば良いのでは. ただし、From: が複数行になっている場合は考慮していません --> #!/usr/local/bin/perl # 多分、フルパスで書いたほうが安全だと思います. $mail = "/..../data/mail.log"; #ここらへんにメールアドレスのヘッターを読み込み送信元メールアドレスを #取得する ...続きを読む
こんな風に記述すれば良いのでは.

ただし、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: の右側の情報が入ります.

メールアドレス以外の情報(名前など)がある場合は、
そこからメールアドレスのみを抽出する必要がありますね.
このQ&Aで解決しましたか?
関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


新大学生・新社会人のパソコンの悩みを解決!

いま みんなが気になるQ&A

関連するQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ