プロが教える店舗&オフィスのセキュリティ対策術

perlで下記のような感じでレンタルサーバーで動かしたところ送信が出来ませんでした。
その場合に、レンタルサーバーなのでsendmailのログも見れないで困っていますので、
原因の確認方法が解ればご教示頂ければ有難いです。

my ( $SENDMAIL ) = '/usr/sbin/sendmail';
open(MAIL, "| $SENDMAIL -t ");
print MAIL "From: xxx@xxx.co.jp\n";
print MAIL "To: xxx@xxx.co.jp\n";
print MAIL "Subject: test\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "Content-Type: text/plain; charset=\"ISO-2022-JP\"\n";
print MAIL "\n";
print MAIL "test_letter\n";

A 回答 (4件)

まずは


use strict;
use warnings;
をつけて、手元の環境でスクリプトの文法チェックを行うことをお勧めします。

また、
open(MAIL, "| $SENDMAIL -t ");

open(MAIL, ">", "debug.txt");
のように変えて、sendmail にどんな文字列が渡されているかを確認するのも役立つと思います。
    • good
    • 0
この回答へのお礼

有難うございます。

use strict;
use warnings;

を入れたところ

print MAIL "From: xxx@xxx.co.jp\n";

の誤りは解りました。

ただ…
送れなかったので、たぶん、サーバーの問題の気がしてきました。

お礼日時:2012/03/04 21:24

確認の方法ではありませんが、もしもサンプルのようなソースであると仮定するなら送れないのは当然なのでは?



>print MAIL "From: xxx@xxx.co.jp\n";
>print MAIL "To: xxx@xxx.co.jp\n";

この2行で使用している " が原因ではないでしょうか?

>print MAIL 'From: xxx@xxx.co.jp\n';
>print MAIL 'To: xxx@xxx.co.jp\n';

このようにする、もしくはメールアドレスをスカラに格納する必要があると思います。
    • good
    • 0

> ただ…


> 送れなかったので、たぶん、サーバーの問題の気がしてきました。

切り分けのため、メールを送るだけの CGI でテストしてみたらどうでしょうか。例えば、下記のようなものです。

#!/bin/sh
echo "Content-type: text/plain\n\n"
/usr/sbin/sendmail -v -t -ffoo@example.com <<__EOM__
From: foo@example.com
To: foo@example.com
Subject: Hello

Hi. Hello World.

__EOM__
exit

foo@example.com は、まっとうなメールアドレスに変えてください。
    • good
    • 0

私もPerl初心者なので見当違いだったらすみません。



eval {
  # 処理
};
if ($@) {     # eval 内でエラーがあったら
  print $@;  # 出力
}

とかでエラーの内容が見れたりしないでしょうか。
そういうことじゃないのかな…
    • good
    • 0

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


このQ&Aを見た人がよく見るQ&A