こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

解決済みの質問

cgi(perl) sendmailの使い方

お手数ですがよろしくお願い致します。

レンタルサーバー(ロリポップ)にCGIを設置してサイトを作成しています。
メールフォームを作ってフォームから指定されたメールアドレスに自動返信するようにしたいのですが、うまく動作しなくて困っています。

利用環境は
Perl(ver.5.8.8)でsendmailについては以下のようになっています。
・SENDMAIL の利用は可能です。 postfixによるラッパーとなります。
・sendmailのパスは/usr/lib/sendmail もしくは/usr/sbin/sendmail どちらでも利用可。

現在メールを送るところまでは出来るようになったのですが、届くメールを見ると宛先などのアドレスに余計なドメインが付加されているのです。

テスト中のcgiは大体以下のような感じです。

my $from = 'foo01\@bar.jp';
my $to = 'foo02\@bar.jp';
my $subject = 'test';
my $msg = 'test';

open(SDML,"| $sendmail -t -i") || die;
print SDML "From: $from\n";
print SDML "To: $to\n";
print SDML "Cc: $cc\n";
print SDML "Subject: $subject\n";
print SDML "Content-Transfer-Encoding: 7bit\n";
print SDML "Content-Type: text/plain;\n\n";
print SDML "$msg";
close(SDML);

これで送られてくるメールを見ると
宛先: "foo02@bar.jp"@usersXXX.phy.lolipop.jp (XXXは本当は数字。usersXXXはロリポップのサーバー番号というものらしいです。)
こんな風に余計なドメインがくっついて送られてきます。

print SDML "To: $to\n"; → print SDML "To: foo02\@bar.jp\n";
という感じで直書きに直すとこの症状は起こらないのですが、変数で指定するとどうしても起こります。

自動返信するため宛先に変数を使いたいのですがどうしたらこの症状が出ないように出来るのでしょうか?

投稿日時 - 2012-03-20 00:44:16

QNo.7372388

困ってます

質問者が選んだベストアンサー

これは、postfixの正しい挙動だと思います。 それは、
$to の定義において、 @の前に \ を置いてエスケープしているのにシングルクォートで括っているから、postfixは 「foo02\@bar.jp」をローカルパートと判断し、「@サーバー名」 を付加しているのでしょう。

投稿日時 - 2012-03-20 12:07:59

お礼

エスケープをなくしたら直りました。
ありがとうございました。

投稿日時 - 2012-03-20 12:48:17

このQ&Aは役に立ちましたか?

3人が「このQ&Aが役に立った」と投票しています

回答(1)

あなたにオススメの質問