現在cgi.pmで記述されたcgiプログラムで、自社にメールが飛んでくる仕組みになっています。作成した業者と連絡が取れなくなってしまい、この場を借りて質問させていただきます。
そのメール本文内に、受信日時を表示させたいと思いますが、どのようにしたらよいでしょうか
## sendmailによる送信
open(MAIL,"|$mailprog -t") || &error(150,"$mail は送信に失敗しました");
print MAIL $mail_dat;
close(MAIL)
という行があり、
これらの行の前に
my($date) = tslib->getDate(); と挿入し、
(※tslib.cgiという別ファイル内に日時取得の行があります)
print MAIL $mail_dat;
の後に
print MAIL $date;
と入れてみましたがCGIはエラーにはならないものの、本文中に日時が表示されません。
なお、送信された内容はCSVにも残るようになっており、その部分の記述は以下のような感じです(dateに関係なさそうなところは省いています)
sub doCsv {
my($date) = tslib->getDate();
# データの追加書込み
open(OUT,">>$file") || &error("Open Error : $file");
#print F $dq . $in{'formmail'} . $dq . "," .
#$dq . $date . $dq . "," .
#$dq . $ENV{'HTTP_USER_AGENT'} . $dq . "\n";
print OUT "$od,$dq$date$dq\n";
close(OUT);
# ロック解除
if ($lockkey) { &unlock; }
}
もしお分かりになる方がいらっしゃればよろしくお願いいたします。(変更修正はあくまで自己責任で行います)
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
>my($date) = tslib->getDate();
本当にエラーになってませんか?
それと、
use tslib とかやってますか?
別ファイルにあるのをどのように使ってるのか
疑問なんですけど。
この回答への補足
上記表記でエラーはでていません
現在修正中のファイルは
index.cgi 内なのですがその中にあった記述は
require 'tslib.cgi';
my($cook) = tslib->setCookie(
my($date) = tslib->getDate(); →これはCSVに記述するところ
の3行でした
use tslib という表記はありませんでしたが
require 'tslib.cgi'; がこれにあたるのでしょうか?
別ファイルのtslib.cgi内には
# 日時のフォーマット
my(@gMon ) = ('Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
my(@gWeek ) = ('Sun','Mon','Tue','Wed','Thu','Fri','Sat');
my(@gWeekJ) = ('日','月','火','水','木','金','土');
sub getDate() {
# 日時の取得
my($time) = time;
my($sec,$min,$hour,$mday,$mon,$year,$wday) = localtime($time);
return sprintf("%04d/%02d/%02d(%s) %02d:%02d",
$year+1900,$mon+1,$mday,$gWeekJ[$wday],$hour,$min);
という記述があります。
CSVファイルに書き込みできている日時はここから引っ張ってきているのかなと思うのですがどうでしょうか?
No.2
- 回答日時:
あ、書き忘れてた。
変数 $mail_dat の中身はどうなっていますか。
もし、最後の行が . のみだった場合、SMTPプロトコルの仕様で、
そこが最終行という指定になりますので $mail_dat に代入している
ところで . の前に時刻を入れる処理をするようにしてみてください。
↓Sendmailについて
参考URL:http://argrath.ub32.org/perldocjp/5.6.1/perlfaq9 …
この回答への補足
mail_dat に関する記述は
--------------------
## $t_dat--$file_datをBase64でエンコードしたデータ
my($yourad,$mail,$subject,$honbun,$fname,$ctype,$f_dat) = @_;
my($bound,$mail_dat,$t_dat); 以下続く・・・
--------------------
if ($fname eq '') {
$mail_dat=<<"EOL";
X-Mailer: $ver
To: $mail$bcc
From: $yourad
Subject: $subject
Content-Type: text/plain; charset="iso-2022-jp"
Content-transfer-Encoding: 7bit
$honbun
EOL
} else {
--------------------
## sendmailによる送信
open(MAIL,"|$mailprog -t") || &error(150,"$mail は送信に失敗しました");
print MAIL $mail_dat;
print tslib->getDate();
close(MAIL);
--------------------
の3箇所ですがどうでしょうか??
質問ばかりで申し訳ございません・・・
No.1
- 回答日時:
何も表示されない(空白も何らかのゴミなども)ということでしょうか。
まず、
print tslib->getDate();
などのようにしてちゃんと日時が返されているかどうかを確認して
ください。
また、正確に返されている場合は
print MAIL $mail_dat . $date;
と文字列連結してみたらどうでしょうか。
問題の部分はCGIモジュールではなく単にSendmailに依存しているよう
ですが提示されたスクリプトだけではこれ以上のアドバイスは難しいと
思います。
この回答への補足
> print tslib->getDate();
やってみましたが、表示されませんでしたので日時を引っ張れていないのだと思います。
index.cgiプログラムの下のほうに
# 現在日時を文字列化する
sub get_date_string {
my($sec, $min, $hour, $day, $mon, $year);
( $sec, $min, $hour, $day, $mon, $year ) = localtime(time);
$year += 1900;
$mon++;
# 必要なら0を付加する
if ($hour < 10) {
$hour = "0$hour";
}
if ($min < 10) {
$min = "0$min";
}
if ($sec < 10) {
$sec = "0$sec";
}
return "$year年$mon月$day日 $hour時$min分$sec秒";
}
sub format_nbsp {
my($str) = @_;
if ( length($str) <= 0 || $str eq " ") {
$str = "";
}
return $str;
}
という記述がありました。
もしかすると現在きちんと作動している、CSVへの日時書き込みはこっち(index.cgi内)で日付を取得しているのでしょうか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- Gmail 【お助け!】サーバーからのメール送信でGmailに送信されない問題について 1 2023/06/20 22:03
- その他(プログラミング・Web制作) google formsを使ったタスク依頼フォーム作成におけるご相談 1 2023/06/22 15:55
- PHP phpのメールフォームの完了画面でメール受信のコードを書いています。 1 2023/05/31 11:39
- PHP php 完了画面の送信メールのコードを書いているのですが・・・ 2 2023/06/02 12:01
- PHP if(preg_match("/[^0-9]/",$gu_d)){意味を教えてください。 1 2022/05/06 05:37
- Access(アクセス) ExcelのVBAコードについて教えてください。 4 2023/01/20 09:44
- Perl perlのflock関数でロックをかけたままopen関数で何度もファイルを開きなおすことはできますか 3 2023/05/01 22:25
- Outlook(アウトルック) Outlookのメール送信を取り消す方法 1 2022/11/17 13:10
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Perlからメール送信で文字化け
-
Application.ScreenUpdating = ...
-
python3について。
-
JSONで文字列が長い時
-
formで特定のinputを送信しない...
-
16進の10進変換について
-
FindFirst を複数条件で検索
-
<SELECT>タグの折り返し
-
セレクトボックスのselected属...
-
文字の横にプルダウンを表示さ...
-
メモリをアドレスを直接指定し...
-
VBA他のブックから値のみ貼付す...
-
実行時エラー 3020の対策
-
子windowsからsubmit()後にclos...
-
【至急!!!】python言語で本を見...
-
回数を指定しないで空白行まで...
-
ACCESS テキストボックスを隙...
-
テーブル内でドロップダウンメ...
-
VB6で、長い時間かかる処理...
-
複数のIP取得
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sendmailで複数の宛先にメール...
-
フォームの日本語が文字化け
-
Perlからメール送信で文字化け
-
Sendmailで送信。メアドが違う...
-
CGI メールフォームからBCCのア...
-
perl フォームメール送信の...
-
Perl からbashを呼び出したい
-
sendmailで複数アドレスに送信...
-
perl で mailto: リンク
-
auのiPhoneでの受信メールが文...
-
sendmailが上手く動かないのか...
-
メールフォームの訪問者情報取...
-
自動返信について
-
crontabで
-
sendmailのFROMに日本語を使う
-
cgi.pmで作成されたsendmailプ...
-
メールのタグ(<a href="mailto:...
-
sendmailについて
-
netsend で振り分け
-
メールフォームCGIの文字化け。...
おすすめ情報