こんにちは、変動する表の作成スクリプトでは、callhiroさん、danyさんに多大なるご協力をいただきありがとうございました。

それで、また別件ですが、サーバー内にあるテキストファイルを読み取ってメール送信する方法をしりたいのですが、今回から質問を細切れにして、ひとつ解決したら締め切ることにいたします。

このQ&Aに関連する最新のQ&A

A 回答 (4件)

参考URLなんかいいんじゃないかと。



sendmail使うなら

&jcode::convert(\$sub,'jis');
&jcode::convert(\$msg,'jis');

if( open( MAIL,"| $sendmail $mailto -t")) {
print MAIL "X-Mailer: $mailer\n";
print MAIL $etc if $etc;
print MAIL "To: $to\n";
print MAIL "From: $from\n";
print MAIL "Subject: $sub\n";
print MAIL "Content-Transfer-Encoding: 7bit\n";
print MAIL "Content-type: text/plain\n\n";
print MAIL "$msg\n";
close( MAIL );
}else{
return "!!ERROR!!";
}

とか。ちなみに
$text = <IN>;
だと最初の一行しか読まないので
$text = join( '',<IN> );
にするといいです。

jcodeについてはこのへんが。必見です。
http://www.mikeneko.ne.jp/~lab/kcode/jcode.html

参考URL:http://member.nifty.ne.jp/hippo2000/perltips/per …
    • good
    • 0
この回答へのお礼

ありがとうございました。

この質問に関しては、よくわかりました。

どうやら、CGIだけでは自動的にメールを送信できないみたいですね。
また、何かありましたらお願いいたします。

お礼日時:2001/05/03 19:51

どうもこんにちは。



今回の質問ですが、みなさんの教えてくださってる方法で良いかと思います。
アドバイスですが、
CGIの本を参考にするのも当然良いですが
やりたいことを実現しているフリーのスクリプトを分析したり、
複数の優良なCGIスクリプトをうまく組み合わせて
オリジナルのものを作ると言うことも有効だと思いますので、
是非参考にしてください。

ではでは。
    • good
    • 0

一つ補足。


「print OUT <<EOM;」のところは文末にセミコロン付け忘れてたので、もし動かす際は付けといて下さい。
    • good
    • 0

sendmailが使えるサーバであれば、単純にテキストファイルをメール送信するだけなら、対象となるファイルを適当な変数に読み込んで、ヘッダ付けてsendmailに流し込めば済むと思いますが。


メールヘッダの書式についてはRFC822を読まれた方がいいでしょう。(メール題名にASCII以外の文字を使うんならRFC2047も必要)

試しに書くとすればこんな感じですかねぇ。(エラートラップ等は省略してます)

open( IN, "< [ファイル名]" );
$text = <IN>;
close( IN );

open( OUT, "| /usr/sbin/sendmail" );
print OUT <<EOM
From: [発信元のアドレス]
To: [宛先]
Subject: [題名]

$text
.
EOM
close( OUT );

この回答への補足

素朴な疑問ですが、お答えいただいたスクリプトはどういうきっかけで、作動しますか。
また、時間指定をして予約送信するにはどうしたらいいでしょうか。

補足日時:2001/05/02 20:53
    • good
    • 0

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

このQ&Aと関連する良く見られている質問

Qスクリプトから別のスクリプトファイルへ移動させるには?

初歩的な質問で恐縮です。
ググッてもわからないので、質問させていただきます。

変数『$A』をIF文で処理して、例えば『$A』が数値の3なら、任意のファイルへページ移動させたいのです。

if($A==3){ここの書き方が不明}

(1)ただ単にヤフーのトップページに飛ばしたい場合
(2)$Aをhiddenタイプで、別のスクリプトファイルに飛ばして処理させたい場合

以上です。
よろしくお願い申し上げます。

以上の二種類です。

Aベストアンサー

if($A == 3) {
print "Location: http://www.yahoo.co.jp/\n\n";
}

で平気だと思います。

間違って
print qq|Content-type: text/html\n\n|;
とかを前に入れてしまうとエラーが出ます。

「リダイレクト」で検索をかければいろいろ出てきます。

Q変動する

はじめまして

CGIを学んで1ヶ月の者です。
実は、仕事で少し面倒な依頼を受けて困っております。
内容はCSV形式のデータをPerlで読み取ってそれを
HTMLのテーブルに流し込むスクリプトなのですが、
慣れていないので思考停止をして進みません。

具体的なCSVデータの例ですが、

10,果物,りんご,ringo.html,ぶどう,budou.html,ばなな,banana.html,10,野菜,かぼちゃ,kabotya.html,なす,nasu.html,きゅうり,kyuri.html,魚,まぐろ,maguro.html,さけ,sake.html,10,肉,牛,usi.html,麺,ラーメン,ra-men.html,そば,soba.html,うどん,udon.html

まず、先頭に10があり、これは分類の区切りを示すヘッダーです。
次に果物でこれは、分類名です。
次にりんご、これは分類詳細名です。
つぎにringo.htmlでこれは分類詳細名のリンク先アドレスです。

このようなデータの並びですが、各分類と詳細項目は変動しますので
このテーブルのあるWEBページを毎回読み直す必要があります。

どうのようにしたらよいのでしょうか。
お助けください。

はじめまして

CGIを学んで1ヶ月の者です。
実は、仕事で少し面倒な依頼を受けて困っております。
内容はCSV形式のデータをPerlで読み取ってそれを
HTMLのテーブルに流し込むスクリプトなのですが、
慣れていないので思考停止をして進みません。

具体的なCSVデータの例ですが、

10,果物,りんご,ringo.html,ぶどう,budou.html,ばなな,banana.html,10,野菜,かぼちゃ,kabotya.html,なす,nasu.html,きゅうり,kyuri.html,魚,まぐろ,maguro.html,さけ,sake.html,10,肉,牛,usi.html,麺,ラーメ...続きを読む

Aベストアンサー

たびたび登場です。

前回紹介したのは基本的な間違いがいっぱいありました。
あと「全角スペース」がよけいにあってはいけないこともわかりました。
この掲示板では、全角スペースを入れないと左詰になってしまい、
みにくなりますが、
コピーした後半角スペースかタブで調節して見やすくしてください。

この前の失敗
1. 「$i」とすべきところを「i」としている箇所が多い
2. 「$title_color」を突然書いていた→「bgcolor=$title_color」
3. よけいな全角スペースがあった→すべての全角スペースを無くしました

以上をふまえて、hoomaさんのスクリプトを集成し、
実際に試してみてちゃんと実行できました。
どうぞお試しあれ。
htmlの表示部分から修正スクリプトを載せておきます。

------------------------------------------
print "Content-type:text/html\n\n";
print "<html>\n";
print "<body>";

$title_color = "#6699cc";
print "<table>\n";
foreach $output (@lines){
@table= split(',',$output);
for($i=0;$i+1<$#table;$i=$i+2){
if($table[$i] == 10){
print"<tr><td bgcolor=$title_color>$table[$i+1]</td></tr>\n";
next;
}
if($table[$i] == 20 && $table[$i+2] == 30){
print"<tr><td><a href=$table[$i+3]>$table[$i+1]</a></td></tr>\n";
$i = $i+2;
next;
}
if($table[$i] == 20 && $table[$i+2] != 30){
print"<tr><td>$table[$i+1]</td></tr>\n";
next;
}
}
}
print"</table>";
print "</body>\n";
print "</html>\n";
------------------------------------------

たびたび登場です。

前回紹介したのは基本的な間違いがいっぱいありました。
あと「全角スペース」がよけいにあってはいけないこともわかりました。
この掲示板では、全角スペースを入れないと左詰になってしまい、
みにくなりますが、
コピーした後半角スペースかタブで調節して見やすくしてください。

この前の失敗
1. 「$i」とすべきところを「i」としている箇所が多い
2. 「$title_color」を突然書いていた→「bgcolor=$title_color」
3. よけいな全角スペースがあった→すべての全角スペースを無...続きを読む

Qある所で小説を書いています 最近親が私のパソコンを 使っていて更新が出来ません。 それでポメラを買お

ある所で小説を書いています
最近親が私のパソコンを
使っていて更新が出来ません。

それでポメラを買おうと
検討をして居るのですが

どのポメラがオススメなのか分かりません。

使うのは小説を書くのと設定とか作って
纏めるのに使用しようかなと思って居ます。

オススメのポメラを教えて下さい!
お願いします!

Aベストアンサー

DM10は初代機。畳めば文庫本に近い大きさになるのに打ちやすい折りたたみキーボードを装備。DM20は連携機能を改良し画面を拡大した強化型、DM5は折りたたみ機構を簡易化した廉価版。
DM100は折りたたみキーボードを廃した二つ折りモデル。機能的な改良も多い。DM25は折りたたみキーボードの最新機種。ここまでは乾電池駆動可能。DM100以外は既にカタログ落ち。
DM200は数年ぶりの新機種。乾電池駆動をやめて充電式。スマホ用モバイルバッテリーが普及したことで乾電池にこだわることはないと判断した模様。機能強化も多い。

現在の市場価格でDM100が20000円ほど、DM200がその倍ぐらいというところ。バリバリ書くというのでないならDM100でいいかも。どうせなら今の一番いいのをというなら200で。

なお、「本体開いたら電源入ってすぐテキスト入力可能」「いくつもアイテム持ち歩きたくない」というのでないなら、タブレットにBluetoothキーボードという手段もある。安いタブレットにキーボードならやはり20000円ぐらいでなんとかなるし、他のことにも使える。『他に何もできないから集中できる』と支持する意見も根強いが。

また、同じKINGJIMからポータブックというWindows搭載で変形キーボード搭載機も出ている。畳めばA5サイズほどになる。定価は高いが実売価格ではDM100並みまで落ちてる。

https://www.amazon.co.jp/dp/B01946W1CA

DM10は初代機。畳めば文庫本に近い大きさになるのに打ちやすい折りたたみキーボードを装備。DM20は連携機能を改良し画面を拡大した強化型、DM5は折りたたみ機構を簡易化した廉価版。
DM100は折りたたみキーボードを廃した二つ折りモデル。機能的な改良も多い。DM25は折りたたみキーボードの最新機種。ここまでは乾電池駆動可能。DM100以外は既にカタログ落ち。
DM200は数年ぶりの新機種。乾電池駆動をやめて充電式。スマホ用モバイルバッテリーが普及したことで乾電池にこだわることはないと判断した模様。機能強...続きを読む

Qランダムスクリプトに時間要素を取り入れたい

次のような時間要素を下記ソースに取り入れたいのです。

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$n = @imgs;
$n = $sec%$n;


つまり上記要素を下記ソースに組み込んで画像の変更間隔を秒や分などの時間単位で指定できるようにしたいのですが下記スクリプトを利用して可能でしょうか?


#!/usr/local/bin/perl

$imgdir="./rndimg/";

if(!opendir(DIR,$imgdir)){
print "Content-type: text/html\n\n";
print "Directory open error.\n";
exit(1);}
@file=readdir(DIR);
closedir(DIR);

$k=0;
foreach $fi (@file){
if($fi =~ /(.*)(\.jpg|\.gif)$/){++$k;}}
srand();$a=int(rand($k));$j=0;
for($i=0;$i<=$a;$j++){
if($file[$j] =~ /(.*)(\.jpg|\.gif)$/){++$i;}}

open(IMAGE, "$imgdir$file[$j-1]");
binmode(IMAGE);
$size=read(IMAGE,$image, -s IMAGE);
close(IMAGE);
if($f =~ /\.jpg$/){print "Content-type: image/jpeg\n\n";}
else {print "Content-type: image/gif\n\n";}
binmode(STDOUT);
print $image;
exit;


色々考えたのですがどうもよくわかりません。
ご教授のほどどうぞよろしくお願いします。

次のような時間要素を下記ソースに取り入れたいのです。

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$n = @imgs;
$n = $sec%$n;


つまり上記要素を下記ソースに組み込んで画像の変更間隔を秒や分などの時間単位で指定できるようにしたいのですが下記スクリプトを利用して可能でしょうか?


#!/usr/local/bin/perl

$imgdir="./rndimg/";

if(!opendir(DIR,$imgdir)){
print "Content-type: text/html\n\n";
print "Directory open error.\n";
exit(1);...続きを読む

Aベストアンサー

> これで試したのですがうまく表示されません。

試されたスクリプトには、元の readdir と closedir、open の行が残ってますので、そこも削除してください。
また、Content-Type の出力部分でファイルの拡張子を調べている部分も、「$f =~ 」から「$file[$a] =~ 」に変更してください。

#!/usr/local/bin/perl

$n = 5; # 画像を変更する秒数
$imgdir="./rndimg/";

if(!opendir(DIR,$imgdir)){
print "Content-type: text/html\n\n";
print "Directory open error.\n";
exit(1);}
$k = @file = grep /\.(?:jpg|gif)$/, readdir(DIR);
closedir(DIR);

$a = int(time / $n) % $k;

open(IMAGE, "$imgdir$file[$a]");
binmode(IMAGE);
$size=read(IMAGE,$image, -s IMAGE);
close(IMAGE);

if($file[$a] =~ /\.jpg$/){print "Content-type: image/jpeg\n\n";}
else {print "Content-type: image/gif\n\n";}
binmode(STDOUT);
print $image;
exit;

> これで試したのですがうまく表示されません。

試されたスクリプトには、元の readdir と closedir、open の行が残ってますので、そこも削除してください。
また、Content-Type の出力部分でファイルの拡張子を調べている部分も、「$f =~ 」から「$file[$a] =~ 」に変更してください。

#!/usr/local/bin/perl

$n = 5; # 画像を変更する秒数
$imgdir="./rndimg/";

if(!opendir(DIR,$imgdir)){
print "Content-type: text/html\n\n";
print "Directory open error.\n";
exit(1);}
$k = @fi...続きを読む

QPerlスクリプトでメールを作成して送信

できるでしょうか?
ニフティプロバイダを使ってますがCGI制限があり
SMTPはできないそうです

Aベストアンサー

Perlスクリプトでも不可能ではないでしょうが、
メールの仕組みを理解していなければ無理でしょう。
(それ以外の問題もあります)

この場合、sendmailというのを利用するのが簡単なのですが、
niftyではsendmailが利用出来ません。
CGI制限の関係で無理かも知れないですね。


おすすめ情報