プロが教えるわが家の防犯対策術!

Perl初心者です。

メールフォームのサンプルを調べていたのですが、
ほとんどがSendmailやJcodeでのサンプルしか検索結果がでてきませんでした。
当サーバーは両方とも使えないとのこと・・・

求めているのは、SMTPとCGI.pmとEncodeあたりをメインに作るメールフォームなのですが、
なかなかありません。
そこで、どなたか私に
そのようなサンプルが載っているサイト
もしくは、
メールフォームで
ホームページ→メールフォーム開く→入力→確認画面→送信→自動返信
と簡単なコードをご提示をお願いしたいです。

一応現在出来ているコードを貼っておきます。(途中です)
現在実行できるのが、ホームページ→定型文送信までです
#!/usr/bin/perl -w
use Encode qw(from_to encode);
use Net::SMTP;
use strict;

#メールアドレス設定
my $from = ’aaa@aaaaa.jp';
my $mailto= 'bbb@bbbbb.jp';
my $mailcc= 'ccc@ccccc.jp';

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><title>メールフォーム</title></head>
<body style="text-align:center">
<table style="width:80%;border:1px solid #f93">
<tr><th style="padding:5px;background:#fc9">メールフォーム</th></tr>
<tr>
<td style="padding:20px">
END

#サブジェクト設定
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 = "テスト";

#文字コードをJISに変換
from_to($message, 'shiftjis', 'iso-2022-jp');

#メール送信オブジェクト設定
my $smtp = Net::SMTP->new('abcdefg.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;

A 回答 (1件)

なにか大きな誤解をしている。


>ほとんどがSendmailやJcodeでのサンプルしか検索結果がでてきませんでした。
 この二つは、まったく異なるものです。

CGI(Common Gateway Interface)は、サーバーで動作するプログラムで、Perlを使おうがCを使おうが、AWKだろうがなんでもよい。とりあえずPerlを使ってCGIを作成する。

 ところが、mailを送信するとなると、MTA(Mail Transfer Agent)にデータを渡して、送信してもらわなくてはなりない。sendmail や qmail がそれにあたります。
 メール転送エージェント - Wikipedia( https://ja.wikipedia.org/wiki/%E3%83%A1%E3%83%BC … )
 これらが使えない場合は、Perl自体にMTAの動作をさせるのが、Net:SMTP モジュールですよ。また、Jcodeは、現在のPerlには組み込み済みなので、使えるはず。
 使えない古いPerlなら、jcode.plで代用させる。その場合、Net::SMTPも使えないのじゃないかと・・

モジュールを調べるコードを書いてみたら??
    • good
    • 0
この回答へのお礼

返事が遅くなり申し訳ないです。

moduleを調べてみました。
Jcode.pmありました。

まだまだ理解できないいないことが多いですね・・・

お礼日時:2016/11/01 15:55

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!