• ベストアンサー

sendmailが上手く動かないのかメールが届きません

こんにちは。 sendmailが上手く動かなくて困っています。特にエラーは出ないのですが、メールが全く届きません。 以下プログラムです。(必要そうな箇所だけ) $sendmail = '/usr/sbin/sendmail'; $mail ='mail@xxx.xx'; $msub = 'メールタイトル'; &mailto if ($sendmail && $mail); sub mailto { $mcom = $FORM{'comment'}; $mcom =~ s/&lt;/</g; $mcom =~ s/&gt;/>/g; # メール本文 $mbody = <<"EOM"; $mcom -------------------------------- ホスト名:$host ブラウザ:$ENV{'HTTP_USER_AGENT'} -------------------------------- EOM if ($msub eq ""){ $msub = NO Subject; } &jcode'convert(*msub,'jis'); &jcode'convert(*mbody,'jis'); open(MAIL,"| $sendmail -t") || &result; print MAIL "To: $mail\n"; print MAIL "From: $mail\n"; print MAIL "Subject: $msub\n"; print MAIL "MIME-Version: 1.0\n"; print MAIL "Content-type: text/plain; charset=ISO-2022-JP\n"; print MAIL "Content-Transfer-Encoding: 7bit\n"; print MAIL "X-Mailer: $ver\n\n"; print MAIL "$mbody\n"; close(MAIL) || &result; } プログラムは一言フォームからコメントを受け取るものです。 jcodeの読み込み、decode等は正常に行われており、openやcloseの前後にprint $mbodyなどしてみても正常に表示されることから、確かだと思います。 他の有名なCGIサイトさんのスクリプトや本等を参考に自作したもので、もちろんそれらのメールフォームは正常に動きます。 ですから、何か小さなミスをしているだけだと思うのですが、それが何なのか見つけることが出来ません。 もし何かお気づきの点がありましたら、教えていただければと思います。

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

  • ベストアンサー
回答No.1

こんにちは。 上記のソースをコピーし、自分の使っているサーバーに合わせて設定してテストしてみましたが、正常に届きましたよ。 根本的なところで ・sendmailは使えるサーバーか ・sendmailのパスはあっているか ・メールアドレスはあっているか をご確認なさったほうがいいかもしれません。

you-jia
質問者

お礼

ありがとうございます…!わざわざ試してくださったんですね! プログラムは問題ないとのこと、安心いたしました。 あれからいくつか試して、こちらのツールについては、sendmailを呼び出す前のプログラムの方で、「close(OUT);」のセミコロンを忘れていたために正常に動作しなかったと思われます。(他のサーバで試したらプログラムエラーになったので分かりました) メールが送れないだけで他は正常だったので、見逃していました…申し訳ありません。 ただ今まで設置して正常に動いていたメールフォームもメールがここ2,3日送れず、鯖の不具合もあったんじゃないかと疑っているんですが(笑)(朝は駄目だったのに今もう一度試したら送れたので) お返事遅くなって申し訳ありませんでした。ありがとうございました!

その他の回答 (1)

  • t140
  • ベストアンサー率39% (59/150)
回答No.2

$msubに日本語文字が使われています。 JISコード変換の後にbase64なりでエンコードする必要が あります。

you-jia
質問者

お礼

こんにちは! base64ってそうゆう役割だったんですね…!他の方のプログラム見て、なんの意味があるんだろう、と思ってました。 早速付け足して正常な日本語で読めました。アドバイスありがとうございました!

関連するQ&A