メールフォームで
ホームページの問い合わせをクリックすると下記のコードでフォームページに飛びます。
print qq(Content-type: text/html; charset=Shift_JIS\n\n);
print <<END;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<title>メールフォーム</title>
</head>
<body>
<h1 class="title">メールフォーム</h1>
<form method="post" action="mail.pl">
<input type="hidden" name="a" value="exec">
件名(Subject) :<br />
<input type="text" name="subject" size="80" value=""><br />
宛先(To) :<br />
<input type="text" name="to" size="80" value=""><br />
差出人(From) :<br />
<input type="text" name="from" size="80" value=""><br />
本文(Body) :<br />
<textarea name="body" rows="10" cols="65"></textarea><br />
<p>
<input type="submit" value="送信">
</p>
</form>
</body>
</html>
END
そこで、内容を入力すると送信するようになのですが、
このアクションでmail.plのコード内で
my $mailto= 'aaaaa@aaaaaa.jp';
my $subject = '問い合わせ;
my $message = "テスト";
このmy の内容を変数を利用してメールフォームから呼び出し?したいと思います。
そのやり方をご教示ください。
また、mailtoの相手に送信してもらったら
自動的に定型文を返信するようにしたいです。
No.2
- 回答日時:
どうやってフォームの入力を取得しているのかは、貼り付けられたソースコードからはわかりませんが、フォームから渡される$to, $from, $body を代入すれば良いのでは?
my $mailto= $to;
みたいな。
あるいはフォームから取得した変数をそのまま使えば良いと思います。
ただしフォームで渡されてくるメールアドレスの正当生チェックや、文字コードの変換もしないとです。
またバッファオーバーフローやクロスサイトスクリプティング、コマンドインジェクションなどへの対策も必要です。
対策済みでしたら失礼。
コメントありがとうございます。
説明不足ですね;;
質問のコードはmailform.pl
下記のコードはmail.pl
#!/usr/bin/perl -w
use Encode qw(from_to encode);
use Net::SMTP;
use strict;
my $from = 'xxxx@xxxxx.jp';
my $mailto= 'xxxx@xxxxx.jp';
my $mailcc= 'xxxx@xxxxx.jp';
my $subject = 'ホームページからのお問い合わせ';
from_to($subject, 'shiftjis', 'iso-2022-jp');
encode('MIME-Header-ISO_2022_JP', $subject);
my $header = << "MAILHEADER";
From: $from
To: $mailto
CC: $mailcc
Subject: $subject
Mime-Version: 1.0
Content-Type: text/plain; charset = 'ISO-2022-JP"
Content-Trensfer-Encoding: 7bit
MAILHEADER
my $message = "テスト";
from_to($message, 'shiftjis', 'iso-2022-jp');
my $smtp = Net::SMTP->new('xxxx-xxxx.jp');
if ( !$smtp ) {
print "メールサーバーにアクセスできません!";
exit;
}
#メール送信
$smtp->mail($from);
$smtp->to($mailto);
$smtp->to($mailcc);
$smtp->data();
$smtp->datasend($header);
$smtp->datasend($message);
$smtp->dataend();
$smtp->quit;
mailform.plからmail.plへの受け渡しができないです
$to;
では同じコード内ではできることを確認しました・・
同じコード内でsubを使えればいいのですが、使いかたが・・
No.1ベストアンサー
- 回答日時:
CGI の仕組みにおいて <form method=post> で送られてくる情報は、
内容は標準入力から、長さは環境変数 CONTENT_LENGTH から取得できます。
ただそのままでは、ブラウザによってエスケープされたままの情報なので、
少々面倒な加工処理が必要です。
ブラウザから送信されるエスケープされた post 情報の例:
a=exec&subject=%E4%BB%B6%E5%90%8D&to=%E3%81%BB%E3%81%92&from=%E3%81%B5%E3%81%8C&body=%E3%81%B5%E3%82%93%E3%81%8C%E3%81%A8%E3%81%A3%E3%81%A8
ですので、その加工をおこなってくれるモジュールを使って取得しましょう。
例:
use CGI;
my $p = new CGI;
my $subject = $p->param('subject');
メールの自動返信を行いたいならば、
MTA に対して受信契機のスクリプト実行を設定することになります。
ただその方法は環境によって異なるので、
インフラ担当の方にお問い合わせください。
コメントありがとうございます。
CGI.pmはインストールはしています。
しかし、まだ使いかたがわかりません・・
質問のコードはmailform.pl
下記のコードがmail.pl
#!/usr/bin/perl -w
use Encode qw(from_to encode);
use Net::SMTP;
use strict;
my $from = 'xxxx@xxxxx.jp';
my $mailto= 'xxxx@xxxxx.jp';
my $mailcc= 'xxxx@xxxxx.jp';
my $subject = 'ホームページからのお問い合わせ';
from_to($subject, 'shiftjis', 'iso-2022-jp');
encode('MIME-Header-ISO_2022_JP', $subject);
my $header = << "MAILHEADER";
From: $from
To: $mailto
CC: $mailcc
Subject: $subject
Mime-Version: 1.0
Content-Type: text/plain; charset = 'ISO-2022-JP"
Content-Trensfer-Encoding: 7bit
MAILHEADER
my $message = "テスト";
from_to($message, 'shiftjis', 'iso-2022-jp');
my $smtp = Net::SMTP->new('xxxx-xxxx.jp');
if ( !$smtp ) {
print "メールサーバーにアクセスできません!";
exit;
}
#メール送信
$smtp->mail($from);
$smtp->to($mailto);
$smtp->to($mailcc);
$smtp->data();
$smtp->datasend($header);
$smtp->datasend($message);
$smtp->dataend();
$smtp->quit;
なのですが、回答してくださった答えはどこにどう入れればいいのでしょうか・?
自動返信はこれができた後に考えますorz
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- HTML・CSS 私の能力からして間違っていないような気がします。 4 2022/09/30 13:24
- PHP 入力した部分を表示させたまま(保持)するにはどうすれば良いでしょうか? 1 2023/01/25 11:14
- PHP PHPのエラーの解消法について教えて下さい。 1 2023/02/06 10:48
- PHP PHPでCookieを使った訪問回数について 1 2023/05/28 14:10
- PHP PHPでユーザー情報を入力して簡易ログイン機能をつくってみたのですが 1 2023/05/29 08:51
- PHP php ログイン 1 2022/11/01 00:24
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAでoutlook365が起動しません。
-
CDO.Messageを使ったVBScript
-
送信フォームから送れない(イ...
-
エクセルVBAでシートモジュール...
-
「デバイスは PRN を初期化でき...
-
Excel VBA 『Call』で呼び出す...
-
VBA This Workbookモジュール...
-
Excel VBAでリンク切れをチェッ...
-
VBAで旧字体を異字体に一括で変...
-
例外処理のフローチャートの記...
-
モジュールとクラスの違いって...
-
VBでグローバル変数を宣言するには
-
VBAで別モジュールへの変数の受...
-
【vba】フォームに書いてあ...
-
Perl モジュールのアンインスト...
-
グラフのX,Y座標を取得したい
-
fetchrow_arrayとfetchrow_hash...
-
perlをバージョンアップしたら...
-
COBOLで、Shellを起動するには?
-
VBA モジュールで共通に使う変...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAでoutlook365が起動しません。
-
【C言語】メールを送信するプロ...
-
Net::SMTPでメールを送信したい...
-
CDO.Messageを使ったVBScript
-
さくらインターネットでの添付...
-
VBAでsmtp認証をするには?
-
フォームデータ-の送信時の確認...
-
VBScriptで、メールの送信をし...
-
Clipmail3.0 確認画面の非表示...
-
メールフォームCGIを探していま...
-
リンクをクリックするだけでC...
-
javamailでメール送信ができません
-
ASPでのsendmail(BASP21の使用...
-
プロキシ経由でjavamailを使っ...
-
Windowsメールを別アプリから操...
-
Exchangeを使用したメール送信...
-
server errorで困ってます。
-
Enterキーを押しても送信しない...
-
フォーム経由で送られるURLつき...
-
LotusScript メール作成方法が...
おすすめ情報