sendmail -fオプションの指定はどこで行えばいいでしょうか?
キャノネットというサーバーでフリーのメールフォームCGI設置を試みました、-fと-tオプション設定を行わなければならないみたいなのですが、今回使用したいCGIの初期設定ファイルsendmail指定部分下記に
#sendmailのパス
$init->{sendmail_path} = '/usr/local/bin/sendmail -t -f ' メールアドレス' ';
と指定しましたがCGIエラーとなってしまい、どうやらプログラム内を書き換える必要があるみたいなのですが、知識不足のため
どうやって変更するのかがわからず困っております。
お詳しい方、下記のプログラム内の変更部分をお教え下さい。
よろしくお願い致します。
(CGIはURLのものを使用しております。)
http://www.web-liberty.net/download/mailplus/index.html
--------------------------------------------------
package webliberty::Sendmail;
use strict;
use Jcode;
use webliberty::Encoder;
### コンストラクタ
sub new {
my $class = shift;
my $self = {
sendmail => shift,
send_to => undef,
send_from => undef,
subject => undef,
name => undef,
message => undef,
files => undef,
x_mailer => undef
};
bless $self, $class;
return $self;
}
### メール送信
sub sendmail {
my $self = shift;
my %args = @_;
$self->{send_to} = $args{'send_to'};
$self->{send_from} = $args{'send_from'};
$self->{subject} = $args{'subject'};
$self->{name} = $args{'name'};
$self->{message} = $args{'message'};
$self->{files} = $args{'files'};
$self->{x_mailer} = $args{'x_mailer'};
if (!$self->{send_to}) {
$self->{send_to} = 'example@example.com';
}
if (!$self->{send_from}) {
$self->{send_from} = 'example@example.com';
}
if (!$self->{subject}) {
$self->{subject} = 'No Subject';
}
if (!$self->{message}) {
$self->{message} = 'No Message';
}
if (!$self->{x_mailer}) {
$self->{x_mailer} = 'Web Liberty';
}
foreach ($self->{subject}, $self->{name}, $self->{message}) {
$_ =~ s/<br ?/>/?n/g;
$_ =~ s/&/&/g;
$_ =~ s/</</g;
$_ =~ s/>/>/g;
$_ =~ s/"/"/g;
}
if ($self->{name}) {
$self->{send_from} = "?"" . $self->_encode($self->{name}) . "?" <$self->{send_from}>";
}
$self->{message} =~ s/?xEF?xBD?x9E/?xE3?x80?x9C/g;
$self->{message} = Jcode->new($self->{message}, 'utf8')->jis;
my @files = split(/?n/, $args{'files'});
my $boundary;
if ($files[0]) {
require webliberty::File;
$boundary = time;
while ($self->{message} =~ /$boundary/) {
$boundary++;
}
}
open(webliberty_Sendmail, "| $self->{sendmail} -t") or return(0, "Sendmail Error : $self->{sendmail}");
print webliberty_Sendmail "X-Mailer: $self->{x_mailer}?n";
print webliberty_Sendmail "To: $self->{send_to}?n";
print webliberty_Sendmail "From: $self->{send_from}?n";
print webliberty_Sendmail "Subject: " . $self->_encode($self->{subject}) . "?n";
if ($files[0]) {
print webliberty_Sendmail "Content-Type: multipart/mixed; boundary=?"$boundary?"?n?n";
print webliberty_Sendmail "--$boundary?n";
}
print webliberty_Sendmail "Content-Transfer-Encoding: 7bit?n";
print webliberty_Sendmail "Content-Type: text/plain; charset=iso-2022-jp?n?n";
print webliberty_Sendmail "$self->{message}?n";
foreach (@files) {
my $file_ins = new webliberty::File($_);
my $file_name = $file_ins->get_name . '.' . $file_ins->get_ext;
print webliberty_Sendmail "--$boundary?n";
print webliberty_Sendmail "Content-Type: application/octet-stream; name=?"$file_name?"?n";
print webliberty_Sendmail "Content-Transfer-Encoding: X-uuencode?n";
print webliberty_Sendmail "Content-Disposition: attachment; filename=?"$file_name?"?n?n";
if (open(webliberty_Sendmail_FILE, $_)) {
binmode(webliberty_Sendmail_FILE);
print webliberty_Sendmail $self->_uuencode(join('', <webliberty_Sendmail_FILE>), $file_name);
close(webliberty_Sendmail_FILE);
}
}
close(webliberty_Sendmail);
return 1;
}
お礼
アドバイス、誠にありがとうございます。 > FromとToに存在しないアドレスを書いては検証も出来ません それは当然やっております。さすがにここにアドレスは公表できませんので、あえて偽アドレスにしてあります。 ということは、ソース的にはおかしくないということでしょうか?
補足
ソースについて補足させていただきます。 > print MAIL $mes; は、以下のように補正しました。 print MAIL "$mes"; なにとぞ、よろしくお願いいたします。