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で質問しましょう!
似たような質問が見つかりました
- CGI htmlからパラメータで、cgiに渡したい。 1 2023/02/06 16:15
- CGI -T(汚染モード)でメールが送れません 1 2022/06/12 14:11
- UNIX・Linux postfix smtpサーバーリレーがTLSハンドシェーク失敗 1 2022/08/15 15:45
- Visual Basic(VBA) VBAにてメール作成した際、一部指定箇所のみ赤文字にしたいです。 下記の内容ですと作成されたメール本 1 2022/04/27 13:31
- PHP Content-Typeが機能していない? 2 2022/07/17 11:10
- PHP htmlspecialcharsが機能していないです。 バグですか? 1 2022/04/05 01:22
- CGI perlで書いたcgiでsqliteの使い方を教えてください 2 2023/05/08 21:29
- UNIX・Linux iptablesを設定するとメール送信処理が遅くなる!? 6 2022/06/07 01:11
- UNIX・Linux redmineにメールを飛ばす方法 1 2022/09/13 22:02
- その他(プログラミング・Web制作) Rでのスクリプトのご相談 3 2022/12/08 16:22
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
perlのプログラミング 部分入れ...
-
Strawberry Perl for Windows ...
-
アルファベットに付いて質問し...
-
Perlで同じフォルダにある任意...
-
perlでリテラル値はメモリにど...
-
ペプシコーラとコカ・コーラとD...
-
perlをバージョンアップしたら...
-
openした後、closeしないでプロ...
-
#!/usr/bin/perlで書きだしたCG...
-
Perlのエラーについてご教授く...
-
perlのflock関数でロックをかけ...
-
AI sisterとは、偽物の人ですか?
-
perlで2次元配列をサブルーチ...
-
perlのrequireの動き方について...
-
perlについての質問
-
Blenderについて
-
Perl の外部モジュールの利用方法
-
perl このテキストファイルを簡...
-
Perlでファイルの末尾から指定...
-
秀丸での一括変換について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語でのメール送信
-
ホームページビルダー20SPで...
-
ReturnPathが指定できない?
-
sendmailでメールが送信されない。
-
Movable Typeのシステムのメー...
-
ビジネスメールの敬称
-
エクセルVBA テキストボックス...
-
DATE型変数を初期化する方法
-
テキストボックスの番号を使っ...
-
初歩的な事だと思います。 Sub...
-
数字以外の入力をエラーにする...
-
EXCEL VBA で指定した範囲に入...
-
お問い合わせフォームから送信...
-
Excel-VBAでInputBox+Pulldown...
-
フォームを再送信しますか?
-
入力フォームの値をQRコードで...
-
VBAの質問になります メッセー...
-
c#でTextBoxの入力制限
-
VBAで質問があります
-
php 確認表示画面で値をSESSION...
おすすめ情報