WEB相談室

Webページ作成に関しての何でも掲示板です。

タイトル:Windows サーバーでの sendmail パス

0:[投稿] さわやか3組 [MAIL] [2003/04/11 17:48 ][環境:XP Windows]

とほほさんの WwwCount Ver3.14 を使っているんですが、
サーバーが UNIX から Windows に替わり、sendmail が使えなくなったようなんです。
$sendmail = 'blat.exe';
でやってみてくださいと問い合わせたら教えてくれたのですが、
これでもメールが来ません。
ダメなら、Net:SMTP function を使ってスクリプトを作れと
指示され、そこから先へ行けません。自ら作ったことはないし、
知識もないもので。どうすればよいでしょう?


1:[回答] Iwa [URL] [2003/04/12 14:03 ]

blat.exeと指定しただけではダメでしょう。
(blat.exeがないと意味がない)
blat.exeはBlatの事だと思うのでBlatの日本語版であるBlatJをダウンロードしてくる必要があります。

もっともBlatもBlatJも配布サイトでは「初心者は使うべきではない」と書いてありますがね。

でもNet::SMTPを使って組めと言われても初心者には無理ですねぇ。(これは私が教えるのは面倒なのでGoogle等で調べてください)


2:[質問] さわやか3組 [MAIL] [2003/04/13 01:28 ]

Iwa さん回答ありがとうございます。

サーバーのサポートさんから下のようなスクリプト・サンプルを
2つ示されました。でもそれと wwwcount とをどう合体させたらよいか全くわかりません。

もし、簡単に wwwcount.cgi 修正できる方いましたらお願いします。

script one -- call anything you like.
#!usr/bin/perl

# ********** Mikeys Email Sender **********

# Start MikeyMail.pl -- This is the form Script

use strict;
use warnings;
use CGI qw( :standard );

# this bit just adds the correct HTML headers
print("Content-type: text/plain\n\n");
print("<html><head><title>Mikeys Email Sender</title></head><body
bgcolor=\"black\">");
print("<strong><font face=\"arial\" color=\"gold\" size=\"3\">");

print("<h1>Mikey Email Sender</h1><br><br>");  # Page header -- change as
appropriate

# start Form
print(start_form( -action => "Deliver.pl"));  # this is the Filename of
the second file
                                             # if you change the
filename, change this also

print("<br>Enter From address:");  # this is the sender's email address
print(textfield("MailFrom"));
print("    Alias");
print(textfield("From"));

print("<br>Enter To address:");    # this is the recipients email address
print(textfield("MailTo"));
print("    Alias");
print(textfield("To"));

print("<br>Enter the Subject");    # this is the subject header
print(textfield("Subject"));

print("<br>Please enter your message here....");  # this is the message
print("<br>");
print(textarea(-name=>"Message", -rows=>5, -columns=>50, -wrap=>1));

print("<br>",submit("Send Message"),end_form()); # send the email

print(end_html);

# End MikeysMail.pl


script 2 -- save as deliver.pl

#!perl/bin/perl

# ********** Mikeys Email Sender **********

# Start Deliver.pl -- This sends the email based on the entries in
MikeyMail

use strict;
use warnings;
use Net::SMTP;
use CGI qw( :standard );

# this bit just adds the correct HTML headers
print("Content-type: text/plain\n\n");
print("<html><head></head><body bgcolor=\"black\">");
print("<strong><font face=\"arial\" color=\"gold\" size=\"3\">");

my $server = "127.0.0.1";     # Do NOT change this!!
my $MailTo = param("MailTo");     # fetch Recipient email address
my $MailFrom = param("MailForm"); # fetch Senders email address
my $Subject = param("Subject");   # fetch Subject Header
my $To = param("To");             # fetch "To" header
my $From = param("From");         # fetch "From" header
my $Message = param("Message");   # fetch actual email message

# open email connection
my $smtp = new Net::SMTP("$server", Hello => "$server")
   or die("Cannot send mail: $!");

# and send the email
$smtp->mail("$MailFrom");
$smtp->to("$MailTo");

$smtp->data();
$smtp->datasend("from: $From\n");
$smtp->datasend("to: $To\n");
$smtp->datasend("Subject: $Subject\n\n");
$smtp->datasend("$Message\n");
$smtp->dataend();
$smtp->quit();  # close connection

# finish sending mail now

# print confirmation of details
print("<br>from: $From");
print("<br>to: $To");
print("<br>Subject: $Subject");
print("<br><br>$Message");

print("<br><br><h1>Email sent.</h1>");
print("<br>Please note that the email message will be correctly formated
to the sender");
print(end_html);

# End Deliver.pl


3:[回答] Iwa [URL] [2003/04/13 01:56 ]

で、さわやか3組さんはBlatとNet::SMTPのどちらを使いたいのでしょうか?

ちなみに提示されたスクリプトの前者はBlatを利用した例(Blatを使用したことがないので詳しくは知りませんが)、
後者はNet::SMTPモジュールを利用した例ですね。


4:[質問] さわやか3組 [MAIL] [2003/04/13 03:25 ]

Net::SMTP の方が興味あるんですけど・・・。


5:[回答] Iwa [URL] [2003/04/13 15:01 ]

ではもちろんサーバーにはNet::SMTPモジュールが入っていますね?
(ないと先に進めないので)


6:[質問] さわやか3組 [MAIL] [2003/04/14 02:49 ]

サンプルのスクリプトはサーバーの人が送ってくれたものでなので
入っていると思われます。


7:[回答] アクア [2003/04/14 22:46 ]

まずはテストしてみる事をお奨めします。
http://〜/〜/wwwcount.cgi?testなどで
とほほ様のCGIならチェック出来たと思いますから。

まず最後にNT用BlatJの参考ページをプレゼントに置いていきます。
http://www.piedey.co.jp/blatj/

当方のwin2000鯖では使用可能でしたよ。


8:[質問] さわやか3組 [MAIL] [2003/04/15 15:58 ]

アクアさん回答ありがとうございます。

とほほさんのCGIでテストしてみましたが
ERROR: blat.exe が存在しません。
ERROR: ***count.cnt が存在しません。
ERROR: ***count.dat が存在しません。
ERROR: ***count.acc が存在しません。
となります。ちなみに cnt と acc は存在していて
カウンタ機能、アクセスログはされています。
メールが来ないだけなんです。


9:[回答] Iwa [URL] [2003/04/15 16:59 ]

「blat.exe が存在しません。」ということはその名のとおりblat.exeがないかblat.exeまでのパスが間違っているということです。

(Net::SMTPでやりたいと言っていたならBlatJを試すこともないかと思われ・・・)


10:[質問] さわやか3組 [MAIL] [2003/04/15 21:48 ]

アクアさんも WWWcount お使いなのでしょうか?
blatJ.exe を使っているんですか? その場合、wwwcount の
スプリプト中の path はどうなりますか?

とほほさんから直接メール頂いたのですが、
メール送信部分をNet::SMTP ファンクション使ったものに
するだけでもそれなりに大変らしいです。


11:[回答] Iwa [URL] [2003/04/15 23:21 ]

> スプリプト中の path はどうなりますか?

もし、サーバーにIISを使っているなら各ファイルまでのパスはC:\〜のように絶対パスで書かないといけません。

理由はIISだとカレントディレクトリの位置をルートディレクトリにしてしまうためです。

でも以下の行をプロセス開始直後の行に書けばカレントディレクトリの位置をCGIのあるディレクトリの位置に戻してくれるので相対パスのままでも動くようになります。

$chdir = $0;
$chdir =~ s/[^\\]*$//;
chdir $chdir;


12:[完了] さわやか3組 [MAIL] [2003/04/16 15:03 ]

WWWcount のスクリプトで

$sendmail = 'blat.exe xxxcount.acc -t ';

として何とかメール受信できました。
「件名」がちょっと前とは違ってしまいますけど。

結局、コマンドを入れればいいだけの話だったので
笑ってしまいました。

回答(必須): 状態:

お名前(必須):

e-mail:

URL:




[戻る]

ChaichanPAPA's World