よくメールマガジンサイト(携帯版)で見かけるのですが、空メールを送信して登録、解除できるサイトがあります。このような仕組みを是非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.1
- 回答日時:
えっと、それはCGIじゃなくて単なるスクリプトのような
.forwardはsendmail系の設定です。
あなたが書いてる設定だと
メールが送られてくるとパイプを開いて/home/user/scriptていう
プログラムにメールのデータを流し込むって感じになってます。
メールのフォーマットについては・・・覚えてないっす検索してみてくだささい(^^;
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.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: の右側の情報が入ります.
メールアドレス以外の情報(名前など)がある場合は、
そこからメールアドレスのみを抽出する必要がありますね.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(メールソフト・メールサービス) メールサーバーは「PC側がメールをDL済みか否か?」を何を以て感知するのか? 2 2022/12/20 14:56
- CGI -T(汚染モード)でメールが送れません 1 2022/06/12 14:11
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- Google+ ブランド品偽物サイトからのメールを拒否する方法 批判覚悟で投稿します。 とあるサイトからブランド品を 2 2023/01/11 21:49
- その他(パソコン・スマホ・電化製品) 私のメールアドレスを知らない知り合いから、スマホにEメールがきたのですが、宛先は私の携帯番号、差出人 3 2022/10/26 05:53
- サーバー メールサーバーについて詳しい方、メールサーバーの管理業務経験のある方、教えてください。 3 2022/11/12 18:24
- Outlook(アウトルック) アイホンで撮った写真を一枚だけPCに移し画像を縮小してWebメールに添付して送信する方法 1 2022/04/22 15:33
- その他(スマートフォン・携帯電話・VR) 携帯メール・アドレスのドメインを教えてください 4 2023/07/13 10:29
- その他(ネットショッピング・通販・ECサイト) 怪しい通販サイトを利用してしまいました。 5 2022/03/29 18:13
- その他(メールソフト・メールサービス) Gmailについて 3 2023/02/23 21:07
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ASPでのsendmail(BASP21の使用...
-
さくらインターネットでの添付...
-
Clipmail3.0 確認画面の非表示...
-
VBAでoutlook365が起動しません。
-
VBScriptで、メールの送信をし...
-
ArduinoのジャイロモジュールMP...
-
ユーザー定義関数に#NAME?が返...
-
Excel VBAでリンク切れをチェッ...
-
「デバイスは PRN を初期化でき...
-
モジュールの最大数はいくつな...
-
例外処理のフローチャートの記...
-
Excel VBA 定義されたプロージ...
-
Cからシェルを起動し返り値をハ...
-
VBAで別モジュールへの変数の受...
-
VBのフォームモジュールと標準...
-
Workbook.BeforeSave イベント...
-
【vba】フォームに書いてあ...
-
perlをバージョンアップしたら...
-
Excel VBA 『Call』で呼び出す...
-
Form間の値の渡し方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでoutlook365が起動しません。
-
VBScriptで、メールの送信をし...
-
VBAでsmtp認証をするには?
-
c#で 簡単なメール(添付ファ...
-
Perl メール 文字化け
-
Net::SMTPでメールを送信したい...
-
メールの送信について
-
Clipmail3.0 確認画面の非表示...
-
Exchangeを使用したメール送信...
-
Windowsメールを別アプリから操...
-
受信メールの本文の行間が空く
-
さくらインターネットでの添付...
-
プロキシ経由でjavamailを使っ...
-
VBSの修正点を教えてください。
-
添付ファイルをつけてメールを送る
-
BASP21使用のメール送信でコマ...
-
foreachでのメール一斉送信処理...
-
server errorで困ってます。
-
CDO.Messageを使ったVBScript
-
LotusScript メール作成方法が...
おすすめ情報