swfファイルから送信できるメールフォームを作成したいと考えています。
それで、とりあえず、perlのsendmailを利用しようと思い立ちました。
自分には、sendmailを使用した経験がないので、とりあえずサーバに
お試しスクリプトをアップして動作を確認することにしたのですが、うまく反映されません。
お試しスクリプトは以下のようなものです。
#!/usr/local/bin/perl
print "content-type: text/html\n\n";
if(open (SENDMAIL,"|usr/local/sbin/sindmail-t")){
$A="a@b.co.jp";
$B="c@d.ne.jp";
print SENDMAIL <<"EOM";
From:$A
TO:$B
test
EOM
close(SENDMAIL);
}else {
print "open_error";
}
_end_
このスクリプトのFromとToの部分を除くと、一応呼び出した時にただしく出力されます。
自分の考えでは、こんなスクリプトでも、呼び出しときに宛先のアドレ
スにメールが送信されると思っていたのですが、何か考え違いをしてるのでしょうか?
とりあえず、日本語文字変換やデータの受け取りなどは、後でjcode.pl
やcgi-lib.plを使用してなんとか付け焼刃でやってみようと思ってます。
よろしく、おねがいします。
No.2ベストアンサー
- 回答日時:
誤字ですが、
>if(open (SENDMAIL,"|usr/local/sbin/sindmail-t")){
ここのファイル名の部分で、パイプに渡すプログラムのパスが絶対パスになっていない(最初の"/"が抜けている)ため、このままの文では正しくオープンできないはずです。
あと、"sendmail" と"-t"の間には空白が必ず必要です。
正しくは、
if(open (SENDMAIL,"|/usr/local/sbin/sendmail -t")){
です。
致命的な誤字ではないですが、FromとTOが大文字と小文字がごっちゃになってるのは修正したほうがいいかと思います。
sendmailの動作に支障はないですが、この先大文字と小文字を厳格に区別する処理にあたるかもしれないので、統一するくせはつけたほうがいいと思います。
また、誤字とは関係ないですが、読みやすさのために全角スペースを入れているみたいですが、試しに実行しようとそのままコピー&ペーストをすると動かないので、スペースを入れずにそのままのほうが回答者に親切かもしれません。
これはあくまで個人的な見解なのであまり気にしなくていいです。
>自分の中でのメール送信にたいする理解では、
>sendmailのある場所に対して、ファイルオープンさせてあげること
>以外は、ほぼ、ファイルの書き込みオープンと大差ないと思っていたの
>ですが、(FromとかToとか入れる以外には) まちがっているのでしょうか?
その理解で正しいです。
が、パイプをオープンするパスが間違っていたので・・・ということになると思います。
すばやい回答、ありがとうございました。
手間取りましたが、なんとか第一段階突破です。
よくは、わからないのですが、EOM記述にするとサーバーではじかれるので、printで項目を一つ一つ、書き出す方法をとりました。
記述する意味があまりないですが、一応スクリプトの主要部分を記述させていただきます。
$sendmail ="/usr/sbin/sendmail";
$my_mail ="aaaaaa\@bbbbb.ne.jp";
$ohter_mail="test\@test.ne.jp";
$subject ="test";
$mail_body="test";
open(SENDMAIL,"| $sendmail -t") || print "sendmailの起動に失敗";
print SENDMAIL "To: $my_mail\n";
print SENDMAIL "From: $ohter_mail\n";
print SENDMAIL "Subject: $subject\n\n";
print SENDMAIL "MIME-Version: 1.0\n";
print SENDMAIL "content-type: text/plain; charset=ISO-2022-JP\n";
print SENDMAIL "$mail_body\n";
close(SENDMAIL) || print "送信に失敗です。";
これで、一応自分のメーラーにテストメールが飛び込んできました。
詳細部分へのアドバイス、ためになるアドバイス、自分の理解に対する同意併せて、ありがとうございます。
まだまだ、これからですが、励みになります。
また、質問とかするかもしれませんが、どうか、その時にもご助力お願いします。
No.1
- 回答日時:
ソースに誤字が満載なのですが、それは実際のソースでは大丈夫ですよね?
メールが送れない原因ですが、print文の一番最初にある改行だけの行です。
メールのヘッダを書く部分は、改行だけの行がないようにしなければいけません(改行だけの行から下が本文だと認識されるからです)
また、メールアドレス中の"@"は、ダブルクォートでくくるときは"\@"のようにエスケープしましょう。
そうしないとその後の文字が配列の変数名として認識されてしまいます。
では、がんばってください。
この回答への補足
初歩的な質問にお答えしていただき、ありがとうこざいます。
昨日、今日で四冊ほど本を買い込んで、このざまです。
先に、『呼び出し時にただしく、出力される』と書きましたが、それは、
if ( open ( SENDMAIL, "|usr/local/sbin/sendmail-t") ){
print "ok";
close ( SENDMAIL );
}else {
print "open_error";
}
とした、場合でした…。
このとき、なぜか、sindmailと書いていたにも関わらず、okがブラウザに出力されました…。
で、その間に print SENDMAIL <<"EOM"......EOM を記述すると、エラーが出ます。
間は、見やすくするため勝手に今回いれたものですが、入れてはならな
いものだったみたいで、勉強になりました。
自分の中でのメール送信にたいする理解では、
sendmailのある場所に対して、ファイルオープンさせてあげること
以外は、ほぼ、ファイルの書き込みオープンと大差ないと思っていたの
ですが、(FromとかToとか入れる以外には) まちがっているのでしょうか?
記述されるところに誤字が満載…ということで、ほんと恥をさらしつつ
も、sindmailと@部分以外にもありましたら、どうかご指摘ください。
ご迷惑かと思いますが、さらなる助言お願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像が表示でnull; this.src
-
テキストファイルで提出とは?
-
INDIRECT 横に再度抽出したい
-
アルファベットに付いて質問し...
-
Perl 特定のフォルダ以外削除
-
Perl言語について。
-
ファイルをディレクトリ分配の...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
bashスクリプト
-
ファイルアイコンの左下に緑の□...
-
perlプログラミング 空白行削除
-
perlでリテラル値はメモリにど...
-
perlで2次元配列をサブルーチ...
-
Perlで時間の計算
-
perlについて
-
perlのrequireの動き方について...
-
perlの構文でカンマの意味が分...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ホームページビルダー20SPで...
-
C言語でのメール送信
-
postmail
-
sendmailのエラーを知りたい
-
sendmailのBCC機能について教え...
-
sendmailでメールが送信されない。
-
ezwebの不達処理
-
sendmailで存在しないアドレス...
-
sendmail 受信メールが文字化け
-
sendmailでのエンベロープのマ...
-
sendmailが踏み台にされている...
-
他のサーバのSendmailへのパスは?
-
CGI メールフォームからBCCのア...
-
Movable Typeのシステムのメー...
-
Perlスクリプトでメールを作成...
-
ReturnPathが指定できない?
-
ビジネスメールの敬称
-
エクセルVBA テキストボックス...
-
お問い合わせフォームから送信...
-
DATE型変数を初期化する方法
おすすめ情報