フォームメールで時刻を設定して、その時間に送信できるようにする方法

このQ&Aのポイント
  • フォームメールで時刻を設定して、その時間に送信できる方法について教えてください。
  • 現在、フォームメールで時刻の設定を行っていますが、うまく送信されません。
  • フォームメールの送信を指定した時間に行う方法について教えてください。
回答を見る
  • ベストアンサー

フォームメール、時刻を設定してその時間に送信されるようにしたい。

こんにちわ。フォームメールで時刻を設定して、その時間に送信できるようにしたいのですが可能でしょうか?以下のように書いたのですが、うまくいきませんでした。どうかご教授ねがいます。よろしくおねがいします。 $gettime = '200511251300'; ###2005年11月25日13時00分に送信したい。 sub menu { print "Content-type: text/html\n\n"; print <<EOF; <html> <head> </head> <body> <form method="post" action="$script"> <input type="hidden" name="action" value="send"> <input type="submit" value="配信確認"> </form> </table> </body> </html> EOF } sub send{ if($gettime eq $gettime){&sendmail;} else{&mes('設定した時間に送信します')} } sub sendmail{ #メール送信のサブルーチン省略 } sub mes{ 「設定した時間を送信する」を表示するHTML省略 } sub time{ ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); @wday_array = ('日','月','火','水','木','金','土'); $timedata = sprintf("%04d%02d%02d%02d%02d",$year+1900,$mon +1,$mday,$hour,$min); $years=$year+1900; $mons=$mon+1;

  • Perl
  • 回答数1
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • galluda
  • ベストアンサー率35% (440/1242)
回答No.1

がると申します。 おっしゃる機能を実装するためには、最低でも ・送りたいメールをプログラム側で一時的に預かる機能(バッファリングとかキューイングとか呼びます) ・定期的に時刻をチェックして「所定の時刻ならメールを送信する」機能 の2つが必要です。 で、後者には、UNIX系であれば大抵の場合cronと呼ばれるものを用います。 ですので、もしcronの設定が出来ないようであれば、おっしゃる機能の実装は難しいかと思われます。 # ほぼ毎分のように誰かがCGIを叩くことを「期待」して…っていう怪しげな実装が出来なくもないのですが。

関連するQ&A

  • Perlでの Timeの足し算

    時間の足し算をやりたい。訳あってライブラリが使えません。 方法は無いでしょうか? 仮にライブラリが使えるなら、下記のようでうまく行っています。 --------------------------------------------------- use Time::Local; $year=2008; $mon =10; $mday=24; $hours = 23; $min = 0; $sec = 0; $time = timelocal($sec, $min, $hours, $mday, $mon - 1, $year); $a1=($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($time ); $mytimeORG= sprintf("%04d/%02d/%02d %2d:%2d", $year + 1900, $mon +1, $mday,$hour,$min); print "$mytimeORG\n"; ($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime($time + 32400); #9H加算 $mytime9H= sprintf("%04d/%02d/%02d %02d:%02d", $year + 1900, $mon +1, $mday,$hour,$min); print "$mytime9H\n"; ---------------------------------------------

    • ベストアンサー
    • Perl
  • 掲示板への書き込み時間

    掲示板CGIについて質問です。 使おうとしているスクリプトはそのままアップロードすると書き込みした時間の表示が 「4/14 (Sun) 17:10」 のようになります。 これを 「2003 4/14 (日) 17:10:50」 のように年と秒まで加えたいのです。 それで後者のように表示される掲示板CGIを参考にしてみましたが、目立った違いはないように思え、どこをどう変更すれば年や秒まで表示されるようになるかわかりません。 思い当たる部分はこのあたりなのですが…。 ↓このように記述されています ************ $ENV{'TZ'} = "JST-9"; ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $year = sprintf("%02d",$year + 1900); $month = sprintf("%02d",$mon + 1); $mday = sprintf("%02d",$mday); if ( substr($month,0,1) == 0 ) { $month =~ s/0/ /; } if ( substr($mday,0,1) == 0 ) { $mday =~ s/0/ /; } $hour = sprintf("%02d",$hour); $min = sprintf("%02d",$min); $sec = sprintf("%02d",$sec); $youbi = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat') [$wday]; $date_now = "$month/$mday ($youbi) $hour:$min"; ************ CGIに手を加えてレイアウトの変更くらいはいつもやっています。 もし書き換える方法がありましたら教えていただければと思います。 どうぞよろしくお願い致します。

    • ベストアンサー
    • CGI
  • CGIについて(時間表示)

    CGI初心者ですが、掲示板を作成中です。投稿するたびにメッセージの投稿時間がすべて現在時刻に書き換わります。 メッセージ毎に時間表示させたいのですが、いかのプログラムのどこを変更すればよいのでしょうか?宜しくお願いいたします。 # 時間処理 sub totime { ($sec,$min,$hour,$mday,$month,$year,$wday,$yday,$isdst) = localtime(time); $year +=1900; $month++; $year = sprintf("%04d", $year); $month = sprintf("%02d", $month); $mday = sprintf("%02d", $mday); $hour = sprintf("%02d", $hour); $min = sprintf("%02d", $min); $sec = sprintf("%02d", $sec); $date = "$month/$mday $hour:$sec"; }

    • ベストアンサー
    • CGI
  • 日付求め

    お世話になります。 早速ですが、perlで以下のように 現在時刻を求め表示するロジックがあります。 ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($time); $year=$year + 1900; $mon =$mon + 1; $date81 = "$year年$mon月$mday日($days[$wday])"; $date82 = "$hour時$min分$sec秒"; この時、 例えば今年末であれば、 2009年1月1日0時と表示されると思います。 これを2008年12月31日24時と表示したいのですが、 何か妙案はあるでしょうか。 宜しくお願いします。

    • ベストアンサー
    • Perl
  • localtime()での時間差の計算の仕方

    $ENV{'TZ'} = "JST-9"; my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); my $now =sprintf("%04d/%02d/%02d-%02d:%02d",$year+1900,$mon+1,$mday,$hour,$min); とすると 2007/01/28-15:56 のようにデータとして取得できるのですが・・・ これと登録日($date=2006/12/31-12:25)との日数差の計算ができません $now-$date とすると年数のところしか計算できず1としか表示できません 登録7日後以降にイベントを発生させたいのですが計算ができないのでうまくいきません 両方time()でやれば$now-$date>604800 とすればなんとかできるのですが登録日は『2006/12/31-12:25』の形で使いたいのです 登録日と現在の日数の差の計算方法を教えてくださいm(--)m

    • ベストアンサー
    • CGI
  • 先月(YYYYMM)の生成方法

    言語は問いません。 先月をYYYYMM形式の文字列で得るクールな方法ってありますか? Perlで以下のように書けば正しく動きますが、なんかダサイ気がします。 my ($sec, $min, $hour, $mday, $mon, $year) = localtime ; $year -= 1 if $mon == 0; $mon = '12' if $mon == 0; $yearmonth = sprintf("%4d%02d", $year+1900, $mon); よろしくお願いします。

  • ブログの本文をウェブサイトに自動転載したい場合

    外部ブログで投稿した本文の内容を、自分のウェブサイトのコメント欄に自動転載させたい目的で、ブログの記事投稿時に下記cgiにping送信して、htmlで返すcgiを用意したのですが、1つどうしても理解できない部分がでてきてしまいました。 専門家の方には簡単な事かもしれませんが、私は長時間調べていました所わかりかねましたので、ご助力を頂きたい次第です。 #!/usr/local/bin/perl -w $upfile = "comment.html"; use CGI; $query = new CGI; $○○○ = $query->param('○○○'); ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time); $year += 1900; $mon += 1; print "Content-type: text/html",\n\n"; print <<"EOF"; <html><body> 表示できません </body></html> EOF open(BG, ">", $upfile); print BG <<EOM; <html> <head> <meta http-equiv="content-type" content="text/html;charset=Shift_JIS"> </head> <body bgcolor="#ffffff"> <p>今日のコメント:$○○○($mon/$mday $hour:$min)</p> </body> </html> EOM close(BG); 上記○○○に入る部分を教えて頂けないでしょうか? 宜しくお願い致します。

    • ベストアンサー
    • CGI
  • 掲示板のcookieが消える?

    自分のサイトに設置してあるBBSなんですが、cookieで名前やメアドを記憶しているはずが、ある日を境に出なくなったんです。 cookieは60日間有効にするために、以下のように書いています。 local($sec,$min,$hour,$mday,$mon,$year,$wday) = gmtime(time+60*24*60*60); @month=('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec'); $gmt = sprintf("%s, %02d-%s-%04d %02d:%02d:%02d GMT", $week[$wday],$mday,$month[$mon],$year+1900,$hour,$min,$sec); $cook="name<>$in{'name'}\,email<>$in{'email'}\,url<>$in{'url'}\,pwd<>$in{'pwd'}\,icon<>$in{'icon'}\,color<>$in{'color'}"; そして、これをprintで書き出しているのですが、なぜ消えてしまうんでしょう? 設定の仕方が間違っています?

  • localtimeについて

    まだCGIを勉強はじめのなのですが、localtimeについて質問させてください。 書籍で時間取得には ($sec,$min,$hour,$mday,$mon,$year,$wno) = localtime(time); とし、time関数で得たものをlocaltime関数で整形 といった事が書かれています。 まずわからないのが最初の ($sec,$min,$hour,$mday,$mon,$year,$wno) = の部分なのですが、カッコ内に変数を並べるというのはどういった命令なのでしょうか?書籍ではここまででこのような使い方や記述は出てきていないので、それ自体がよく理解できずにいます。それとも($sec,$min,$hour,$mday,$mon,$year,$wno) = localtime(time);をおきまりパターンとしてワンセットで覚えるべき事なのでしょうか。 続いてlocaltime(time)ですが、これは()内のtime関数によって取得された1970年基準からの秒数を、localtimeによって英語圏での標準的な日付時間表記に直して表示するという事で良いのですよね? これが、なぜ ($sec,$min,$hour,$mday,$mon,$year,$wno) とすることで各変数に割り振ることができるのかがよく分かりません。 これらはおきまりパターンとして覚えるべき事なのでしょうか?それとも配列のようにあるパターンに乗っ取って書かれ得いる事で他に応用がきくような意味合いのものなのでしょうか? ご教授いただきたく思います。 よろしくお願いします。

    • 締切済み
    • CGI
  • perl qw(aaa bbb ccc)[$hoge]のような記述

    my($sec, $min, $hour, $mday, $mon, $year, $wday, $yday, $isdst) = localtime(time); $wday = sprintf("%s", qw(Sun Mon Tue Wed Thu Fri Sat)[$wday]); 2行目のsprintfですが、qw(Sun Mon Tue Wed Thu Fri Sat)[$wday]はどのようなことが行われているのでしょうか? sprintf("%s", "hello world!");みたいな基本的なものならsprintfの使い方はわかります。ですが、qw(aaa bbb ccc)[$hoge]のような記述についてがわかりません。 上記の例でいえば、どういう結果になるのかはわかるのですが、どういう過程で代入されているのかがわかりません。 qw(Sun Mon Tue Wed Thu Fri Sat)[$wday]という書式はどういうことが行われているのか教えてください。よろしくお願いします。

    • ベストアンサー
    • Perl

専門家に質問してみよう