• 締切済み

perでメールが送信出来ない場合の確認方法

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";

みんなの回答

  • aki04
  • ベストアンサー率0% (0/0)
回答No.4

私もPerl初心者なので見当違いだったらすみません。 eval {   # 処理 }; if ($@) {     # eval 内でエラーがあったら   print $@;  # 出力 } とかでエラーの内容が見れたりしないでしょうか。 そういうことじゃないのかな…

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.3

> ただ… > 送れなかったので、たぶん、サーバーの問題の気がしてきました。 切り分けのため、メールを送るだけの 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 は、まっとうなメールアドレスに変えてください。

回答No.2

確認の方法ではありませんが、もしもサンプルのようなソースであると仮定するなら送れないのは当然なのでは? >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'; このようにする、もしくはメールアドレスをスカラに格納する必要があると思います。

  • t-okura
  • ベストアンサー率75% (253/335)
回答No.1

まずは use strict; use warnings; をつけて、手元の環境でスクリプトの文法チェックを行うことをお勧めします。 また、 open(MAIL, "| $SENDMAIL -t "); を open(MAIL, ">", "debug.txt"); のように変えて、sendmail にどんな文字列が渡されているかを確認するのも役立つと思います。

misaki777v
質問者

お礼

有難うございます。 use strict; use warnings; を入れたところ print MAIL "From: xxx@xxx.co.jp\n"; の誤りは解りました。 ただ… 送れなかったので、たぶん、サーバーの問題の気がしてきました。

関連するQ&A