このページは福井県立大学の田中求之が2006年1月まで運用していた Mac のサーバ運用に関する会議室 「Web Scripter's Meeting」の記録です。情報が古くなっている可能性がありますのでご注意ください。

初心者ですお教え下さい。Macperl関連

発言者:yahiro
( Date Tuesday, March 18, 1997 17:23:43 )


会社でMACサーバー(ウエッブスター)をたち上げて
いるのですが、これにCGIを入れようと日々苦闘しております。
言語はmacperlをはじめてみました。ちなみにMACに関しても
ほとんど素人状態です。どうかみなさまお助け下さい。

素人ですのでほとんどわかってないものと思って下さい。
具体的な質問としては、マックサーバーにフォームでメールを
送るCGIをのせてみたいのですが・・

あるunix用の参考書から下記のようなサンプルをためしてみました。

coment.html-------------------------
<HTML>
<HEAD>
<TITLE>Please give me your comment</TITLE>
</HEAD>
<BODY>
このサイトについてのコメントをいただけると嬉しいです。

<FORM METHOD="POST" ACTION="comment.cgi">

あなたのお名前は? <INPUT TYPE="text" NAME="name"><BR>
メールアドレスは? <INPUT TYPE="text" NAME="address" SIZE=40><BR>
コメントをどうぞ。<BR>
<TEXTAREA NAME="comment" COLS=60 ROWS=5></TEXTAREA>
<P>

書き終えたら→<INPUT TYPE="submit"><br>
書き直すなら→<INPUT TYPE="reset">
</FORM>

</BODY>
</HTML>

--------------------------------------
coment.cgi---------------------
#!/usr/local/bin/perl

$sendmail = 'sendmail';
$myaddress = 'yahiro@mrxnet.or.jp';

require 'cgi-lib.pl';
require 'jcode.pl';

&ReadParse;

$message = <<END_OF_MESSAGE;
Subject: A comment to Web
Reply-To: $in{'address'}

○お名前
$in{'name'}

○アドレス
$in{'address'}

○コメント
$in{'comment'}
END_OF_MESSAGE

&jcode'convert(*message,'jis');

open(MAIL,"|$sendmail $myaddress");
print MAIL $message;
close(MAIL);

print <<END_OF_HTML;
Content-type: text/html

<HTML>
<HEAD>
<TITLE>Thank you</TITLE>
</HEAD>
<BODY>
ご協力ありがとうございました。
</BODY>
</HTML>
END_OF_HTML
--------------------------------------

とりあえずのっけて試してみたのですがだめでした。
sendmailというunixのコマンドにマックの方が
たいおうしていないためなのでしょうか?

いろいろ調べてみたのですが、まったくわかりません。

また、MACサーバーの場合
#!/usr/local/bin/perlこの部分はカットしてのせているのですが
これでいいのでしょうか?
どうか、みなさんアドバイスをお願いいたします。




田中求之 さんからのコメント
( Tuesday, March 18, 1997 17:46:15 )

私は Perl のことは分からないのですが、UNIX からの移植の場合、UNIX の
コマンドやシェルを呼んでいる部分は、基本的には Mac では動かないと思った
方がよいでしょう。

sendmail を使う替わりに、別のメール送信用のルーチンを呼び出すように
書き換える必要があると思います。あるいは、自分で socket を使って
メール送信を行う通信部分まで書いてしまうという方法ですかね。

MacPerl でのメール送信に関しては、他のところで議論されていた
と思いますので、そちらも参考になるかもしれません。

大分県 安東 さんからのコメント
( Tuesday, March 18, 1997 17:55:59 )

#ココで教えてもらったことなんですが...(^^;  有難う〜

MacPerlでもsendmail.plは使えます。

unixでもMacでも動いたソースです。

----

#!/usr/local/bin/perl

use Net::SMTP;

$smtp = Net::SMTP->new('nbu-post.mc.nbu.ac.jp');

$smtp->mail($ENV{ando});

$smtp->to('ando@mc.nbu.ac.jp');

$smtp->data();

$smtp->datasend("From: ando\@mc.nbu.ac.jp\n");
$smtp->datasend("To: ando\@mc.nbu.ac.jp\n");
$smtp->datasend("Subject: simple test message\n");
$smtp->datasend("\n");
$smtp->datasend("A simple test message\n");

$smtp->dataend();

$smtp->quit;

-----

よしもと さんからのコメント
( Tuesday, March 18, 1997 21:36:03 )

ちなみに安東さんのかかれたスクリプトを動かすためにはlibnetという
モジュール群が必要です。これは以下のサイトから入手できます。

あと、最初の所で

 $smtp = Net::SMTP->new('mailhost',
                           Hello => 'my.mail.domain'
                          );

てな感じでHELOを送らないと最近のsendmailは文句言うんじゃなかったかな?

→  libnet for MacPerl

よしもと さんからのコメント
( Tuesday, March 18, 1997 21:38:28 )

ごめんなさい。上のURLは間違いです。
正しくは、ここです。

→  libnet for MacPerl

yahiro さんからのコメント
( Tuesday, March 18, 1997 23:41:53 )

今日の夕方会社で質問を書き込んで、帰って自宅でつないでみたら、なんともう、多くの方々からアドバイスをいただいてて感謝・感謝です。ほんとうにありがとうございます。

さっそく明日会社でためしてみたいと思います。

なにぶん、初心者なので右も左もわからない状態です。
アドバイスいただいた内容も正確に把握できているのかわかりませんが、いろいろ挑戦てみたいと思ってます。(^^

ところで安東さんから教えていただいたプログラムですが

#!/usr/local/bin/perl

use Net::SMTP;

$smtp = Net::SMTP->new('********');

$smtp->mail($ENV{*******});

$smtp->to('***********');

$smtp->data();

$smtp->datasend("From: *********\n");
$smtp->datasend("To: *************\n");
$smtp->datasend("Subject: simple test message\n");
$smtp->datasend("\n");
$smtp->datasend("A simple test message\n");

$smtp->dataend();

$smtp->quit;

----------------------------------

*******で記入している部分を自分のメールアドレスやサーバー
に変更すればよろしいのでしょうか?

ぜんぜん検討はずれな質問かもしれませんがどうかみすてずに
よろしくお願いいたします。

それでは今後ともよろしくお願いいたします。


yahiro さんからのコメント
( Wednesday, March 19, 1997 17:42:00 )

うーん。やっぱりわかってなかったのでしょうか?

教えていただいたことを実行してみたのですが、僕の理解が
たりないためかどうしても、うまくいきません。

ちなみにこのようにやてみました

----------------------------------------

#!/usr/local/bin/perl
use Net::SMTP;

$smtp = Net::SMTP->new('post.mrxnet.or.jp',
                           Helo => 'my.mail.domein'
                          );
$smtp->mail($ENV{yahiro});

$smtp->to('yahiro@mrxnet.or.jp');

$smtp->data();

$smtp->datasend("From: yahiro\@mrxnet.or.jp\n");
$smtp->datasend("To: yahiro\@mrxnet.or.jp\n");
$smtp->datasend("Subject: simple test message\n");
$smtp->datasend("\n");
$smtp->datasend("A simple test message\n");

$smtp->dataend();

$smtp->quit;
----------------------------------------

それから、よしもとさんに教えていただいた。libnetの
ほうですが、libnet1.04をひろってきて、macperlの
libのホルダーにそのままいれてみたのですが、
これでよかったのでしょうか?

なにせプログラム経験が過去にないおまけにmacperlも
憶え始めて1週間という状態ですので・・・(^^;

どうかよろしくおねがいします。

usui , seiichi さんからのコメント
( Wednesday, March 19, 1997 18:11:29 )

使っていたlibnetが古いと慌てているうすいです。

どんなエラーが出たのかわからないので、ちょっと見で答えますが、
>$smtp = Net::SMTP->new('post.mrxnet.or.jp',
>                          Helo => 'my.mail.domein'
>                          );

で、
Helo => 'my.mail.domein'
がおかしいと思います。

Hello => post.mrxnet.or.jp'
かな?



yahiro さんからのコメント
( Wednesday, March 19, 1997 18:48:04 )

アドバイスありがとうございます。

さっそくusuiさんにご指摘いただいた部分をなおして
のせかえてみたのですが、まだエラーらしきメッセージ
がでてしまします。
ちなみにNETSCAPEでCGIを読みにいってるのですが
そもそもここが間違いなのかもしれないのですが、
ちなみにこのようにでてしまします。
----------------------------------------

Diagnostic Output


# # # # Can't locate vars.pm in @INC.
File 'MrMAC:WebSTAR121:MacPerl:MacPerl ト:lib:Net:SMTP.pm'; Line 199
BEGIN failed--compilation aborted.
File 'MrMAC:WebSTAR121:MacPerl:MacPerl ト:lib:Net:SMTP.pm'; Line 199
BEGIN failed--compilation aborted.
File 'MrMAC:WebSTAR121:form.cgi'; Line 10

-------------------------------------------

たびたび申し訳ないんですがどうかアドバイスをお願いいたします。


よしもと さんからのコメント
( Wednesday, March 19, 1997 22:36:19 )

vars.pmがないよぉ、って言っていますね。
libフォルダーの中にありませんか?

#ところで、MacPerlのバージョンは何を使っていますか?

yahiro さんからのコメント
( Friday, March 21, 1997 10:46:07 )

みなさん、本当にありがとうございました。
やっとメール送れました。

よしもとさんのご指摘をうけてさっそくlibフォルダーを
調べてみたらたしかに、vars.pmというものは、存在しなかったです。
ちなみに、僕が使用していたのは雑誌の付録についていた
Macperl:ver.5.07rlmというものでした。
そこでバージョン5.13をひろってきました。(vars.pmはこれにはありました)
そしてためしてみたら、なんの問題もなく動きました。

これから、いろいろ試していきたいと思います。
また、つまずいたら質問させていただきます。

いろいろ教えていただきありがとうございました。

まさ さんからのコメント
( Tuesday, May 12, 1998 17:54:22 )

こんにちは。
以前に参考書で、MacPerlではsendmailは使えないような事を目にしたので
あきらめていたのですが、こちらのログと過去ログの「Mac Perl でメールを送る。」
を発見して、さっそくやってみました。
おかげさまで、フォームからのメールを送ることに成功しました。
いままでは、textに落として手作業でメールで流していたのですが、これで
楽になりそうです。

話がそれましたが、過去ログ(↓)のcgiのソースを参考にしてやっていますが
(ほとんどいじってません)これに、checkboxを追加して複数回答も実現して
みたいのですが、これは可能でしょうか?
色々と自分なりに試してみましたが、どうもうまくいかなかったのでこちらに
質問させていただきました。

HTMLの方のcheckboxの所は、
<INPUT TYPE="CHECKBOX" VALUE="win95/98" NAME="OS">Windows95/98
として、同じように全部で6個まで選べるようにしています。
6つ共、NAME="OS"の所は一緒で、VALUEの所を変えています。
この辺りも、うまくいかない原因なのでしょうか?

ご存知の方、ご教授よろしくお願いします。

#MacPerlは、520r4を使用しています。

→  Mac Perl でメールを送る。