CGI-BBS > 情報収集 > フォームメール > webメーラーの改造で押されたページのタイトルを題名にしたい。


カレッヂ
カレッヂ


質問者 sekihisa  投稿日 2012/1/20(金) 10:33:20
皆様にはいつもお世話になっております。
今回はお客様から個別の質問にに対応するため
HPの複数ある各ページにSSIでwebメーラーを設置しようと考えています。
その際、どのページから押されたか判別するため
押したページのタイトル<TITLE>○○</TITLE>の○○の部分を取得して
メールの題名の部分に挿入したいと考えています。
webメーラーの改造して出来るものでしょうか
お教えいただければ幸いです。
よろしくお願い致します。

【プロバイダ】sakura
【習熟度】多少の設置経験

回答者 rescue  [削除]  投稿日 2012/1/27(金) 23:14:19
SSIではクエリーを取得できないため出来ないと思われます。
<iframe>を使って埋め込んでみてはどうでしょうか?
質問者 sekihisa  [削除]  投稿日 2012/1/29(日) 15:20:37
早速のご教授ありがとう御座います。
ページ内に<iframe>を挿入しdocument.title取得を試みたのですが
webメーラーのタイトルになってしまい、思うような結果にはなりませんでした。
$titleではまずかったでしょうか・・・

当初考えていた件名にページタイトルを挿入する言う案ですが、
ページの中には長文タイトルもあり、
とりあえず本文枠内に$refを挿入し
ボタンを押したページのURLの取得はできました。
回答者 rescue  [削除]  投稿日 2012/1/29(日) 19:00:12
ちょっと勘違いしていました。

あまりJavaScriptは詳しくないので、取得できるのかわかりませんが、
CGIで簡単に判別する方法は、フォームの中にデータを含めてしまうことです。

<input type=hidden name="どのページ?" value="あのページ">

というのをフォームに加えることで、画面には出ませんが、
入力内容として届きます。
質問者 sekihisa  [削除]  投稿日 2012/1/30(月) 15:08:07
twitterのツイートボタンを押すと
ボタンを押したページのタイトル名とURLが引用されるので
何らか方法があるとおもいました。
とりあえず
<input type="hidden" name="URL" value="あのページ">
という形でリンク元のURLを取得し判別することにしました。
もう少し考えてみます。
回答者 rescue  [削除]  投稿日 2012/1/30(月) 17:19:05
状況わかってきました。
適切な回答ではなかったようです。

まず、メールフォームではなく、WEBメーラー
http://www.rescue.ne.jp/cgi/mailer/
ですね。

この場合、フォーム自体もCGI出力しているので、1フォーム1CGIの設置が必要なので、
CGIの初期設定に $title をそのままメールに書き出せばOKです。また、参照元は、
既に書き出しています(メールのヘッダ部分に)。これを、メール本文に書き出せばOKです。

mail.cgi 512行目付近

if (open(OUT,"| $sendmail -t")) {

	foreach (@MailValue) { print OUT $_; }

	#この4行
	print OUT "\n\n";
	print OUT "題名: $title\n";
	($ref,$ref2) = split(/\?/,$ref);
	print OUT  "参照元: $ref\n";

	close(OUT);
}

上記の4行を指定の場所に挿入してください。
これで、なんという名前をつけたどのフォーム(CGI)からのメールか、
メール本文に書き足されます。

なお、通常のページ(HTML)でJavaScriptを使ってそのページの<title>タイトル</title>を
取得する方法は

<script type="text/javascript">
<!--
document.write("タイトル:",document.title)
//-->
</script

で出来ることがわかりました。ただ、今回のCGIの場合は必要ありません。
私もその都度興味があった動作を勉強しながらCGIを作っているので、
パっと回答が浮かびませんでした… ^^;
質問者 sekihisa  [削除]  投稿日 2012/2/9(木) 15:26:50
連絡遅くなりました。
ご検討ありがとうございます。
いろいろテストしましたが

現在考えていた各ページに設置したリンクボタンを押すと
共通のwebメーラーが別ウインドウで立ち上がるwebメーラー設置方法では
  	print OUT "題名: $title\n";
	($ref,$ref2) = split(/\?/,$ref);
	print OUT  "参照元: $ref\n";
上記の方法ですと
webメーラー自体の設置場所URLとwebメーラーに設定したタイトルが取得されてしまい
思うような結果には至りませんでした。

mail.cgi 211行目に
<input type="hidden" name="URL" value="$ref">で
リンク元のURLが取得としました。
リンク元タイトル取得にはいたっておりませんが
わかりましたらまた連絡いたします。
ありがとうございました。

このページは終了したので返信(回答)は書きこめません
 


Web裏技