KENT-WEB サポートコーナー 過去ログ [ 0490 ]


記事No: 13375
投稿日: 2014/10/15(Wed) 14:14:16
タイトルClipmail 4.1の件名に名前(name)を指定
ID情報: beams95
投稿者: わかお
URLhttp://www.m-infinity.company/kreuse/contact/form.html

現在、Clipmail 4.1 の設置で件名の改良を行っております。

過去ログはかなり前のバージョンのものでして、似たようにやってみたものの上手くいかず、再度4.1バージョンでご指導いただけましたら助かります。

clipmail.cgiの「MIMEエンコード」と「件名MIMEエンコード」内にある{subject}を{name}に変更すればいいだけかな?と思ってテストしているのですが、下記のようになってしまいます。


# MIMEエンコード
my $sub_me = "$$in{name}様 よりお問い合わせがありました。" ne '' && defined($cf{multi_sub}->{"$$in{name}様 よりお問い合わせがありました。"}) ? $cf{multi_sub}->{"$$in{name}様 よりお問い合わせがありました。"} : "$cf{name}様 よりお問い合わせがありました。";

↓送信してみると・・・

件名:様 よりお問い合わせがありました。


# 件名MIMEエンコード
my $re_sub = $j->set("$cf{name}様 お問い合わせ有難うございます。",$cf{kcode})->mime_encode;

↓送信してみると・・・

件名:様 お問い合わせ有難うございます。

{name}が反映されてません。


以前、KENTさんのご教授で、Postmailでこのようにして作動いたしました!

何か記述が足りなければご指導いただけましたら幸いです。


記事No: 13376
投稿日: 2014/10/15(Wed) 17:17:53
タイトルRe: Clipmailの件名に名前(name)を指定
ID情報: hirayama
投稿者: hirayama
URLhttp://shade-search.com/sts/fsw/wiki.cgi

送信メールの件名については、$cf{multi_sub}とのからみがイマイチわかっていないのですが、
とりあえず、オリジナルに戻した上で、
MIMEエンコードの前に
$cf{subject} = $$in{name} . "様 よりお問い合わせがありました。";
を入れるといいと思います。

同様に返信メールの方もオリジナルに戻した上で、MIMEエンコードの前に
$cf{sub_reply} = $$in{name} . "様 お問い合わせ有難うございます。";
を追加すればいいと思います。
フォームの「お名前」欄から送信されるのは、$$in{name}で、$cf{name}という変数は設定されていません。


記事No: 13377
投稿日: 2014/10/15(Wed) 18:38:05
タイトル【解決】Clipmail4.1の件名に名前(name)を
ID情報: beams95
投稿者: わかお

hirayamaさん、早速のご教授をありがとうございます!

管理側に送られてくる送信メールは

●MIMEエンコードの前に

$cf{subject} = "$$in{name} 様 よりお問い合わせがありました。";

自動返信で送るメールは

●件名MIMEエンコード

my $re_sub = $j->set($cf{sub_reply},$cf{kcode})->mime_encode;

こちらのようにして動作確認いたしました!

最初、「.」や「"」の位置でエラーになってしまったので、以前、KENTさんにお教えいただいたことを思い出してちょっと修正してみました♪

無事に稼働できましたのでありがとうございます!!

hirayamaさんのアドバイスでできたことですので本当に感謝感謝です!!

もうひとつ悩んでいることがありまして、下記に再度追加させていただきます。

もし、お時間ございましたらご教授願えますと幸いです(^v^)


記事No: 13378
投稿日: 2014/10/15(Wed) 18:47:45
タイトルClipmail4.1の本文上部に名前(name)を
ID情報: beams95
投稿者: わかお

【 Clipmail4.1にて / 2014年10月現在最新Ver.】

Clipmail.cgiの「# 送信実行内」の「# 本文テンプレ読み込み/# テンプレ」と言う箇所に

$reply =~ s/!name!/$$in{name}/g;  ##←338行目辺りです。

上記を追加して、メール本文の上部に「お客様名」を入れようと思いました。


tmpl/reply.txt というファイルの上部に下記を追加しています。

● !name! 様
==============================

この度は、お問い合わせ頂きまして誠にありがとうございます。


cgiとテキストのテンプレでこうすれば名前が入るかな?と思いましたが、実際にテストしますと、下記のような16進法名?のようになってしまうのです…。


● 9363928681408cf58b60 様
==============================

この度は、お問い合わせ頂きまして誠にありがとうございます。


「誰これ!?」という状態でして、どこかここだけにエンコードでも設定する箇所があるのかないのかと分からない状況です。

こちらも過去ログでは出来ていらっしゃるのですが、やはり古いClipmailの以前バージョンの情報でして、新しいバージョンと対処が違うようです。


お時間のある時で構いませんので、ご教授願えましたら幸いです。


記事No: 13380
投稿日: 2014/10/17(Fri) 11:14:55
タイトルRe: Clipmailの本文上部に名前(name)を入れたい。
ID情報: hirayama
投稿者: hirayama
URLhttp://shade-search.com/sts/fsw/wiki.cgi

あちこちで文字コードの変換が行われているようなので、
どこで置換するかによって、置き換える文字列のコードも変換してやる必要があるようです。

clipmail.cgi 469行目あたりの
$reply =~ s/!message!/$mbody/ if ($cf{auto_res});
の下に
my $jis_name = $$in{name};
$jis_name = conv_jis($jis_name);
$reply =~ s/!name!/$jis_name/ if ($cf{auto_res});
を追加してみてはどうでしょうか。


記事No: 13381
投稿日: 2014/10/17(Fri) 16:29:31
タイトルRe^2: Clipmail4.1の本文上部に名前name
ID情報: beams95
投稿者: わかお
URLhttp://www.m-infinity.company/kreuse/contact/form.html

hirayamaさん、度々ご教授有難うございます!

clipmail.cgi 469行目あたりに

$reply =~ s/!message!/$mbody/ if ($cf{auto_res});
my $jis_name = $$in{name};
$jis_name = conv_jis($jis_name);
$reply =~ s/!name!/$jis_name/ if ($cf{auto_res});

このように追加してみたのですが、やはり名前が英数字になってしまいまして、コードが上手く変換されていないように思いました。

お教えいただいたのは、!namae!の箇所をSHIF-JISにエンコードを組み込んでいる、という事でよろしいのでしょうか。CGIは稼働してますので、考えはこれでいいのですよね。


Clipmail4.1はまだ2014年の9月に改良されたばかりだったのですね!過去ログで4.1の情報が全然なかったのでなぜだろう…と思っておりました(^o^;)

お役にたてる情報があると思いますので、件名に「4.1」を追加させていただきました。まだまだ新しいバージョンですので、ご無理ないほどに、技術のある方が気長に改良情報を追加して頂けましたら幸いです!

どうぞよろしくお願いいたします。


記事No: 13382
投稿日: 2014/10/17(Fri) 21:00:44
タイトルRe^3: Clipmail4.1の本文上部に名前name
ID情報: hirayama
投稿者: hirayama
URLhttp://shade-search.com/sts/fsw/wiki.cgi

>お教えいただいたのは、!namae!の箇所をSHIF-JISにエンコードを組み込んでいる、という事でよろしいのでしょうか。CGIは稼働してますので、考えはこれでいいのですよね。
Shift-JISではなく、JISに変換しています。
conv_jis の部分は conv_sjisになっているということはないですよね。


記事No: 13384
投稿日: 2014/10/18(Sat) 10:23:35
タイトルRe^4: Clipmail4.1の本文上部に名前name
ID情報: beams95
投稿者: わかお

hirayamaさん、ご指導有難うございます。

変換するのは「JIS」にするのですね。
もしかしましたら、「conv_jis」を「conv_sjis」にするのかと思いまして試してみましたがダメでした(^o^;)

先日、hirayamaさんが本文の上部に挿入する記述をお教えい下さいまして、てけてんさんがその個所の修正版をお教えくださっているので、試してみます!

徐々に使いやすくお客さまにも親切なメールフォームになっているので嬉しい限りです♪本当に有難うございます。


記事No: 13383
投稿日: 2014/10/18(Sat) 07:57:38
タイトルRe^3: Clipmail4.1の本文上部に名前name
ID情報: teketen
投稿者: てけてん

自動返信の時だけ、送信者の名前を表示したいということですよね?

> clipmail.cgi 469行目あたりに
>
> $reply =~ s/!message!/$mbody/ if ($cf{auto_res});
> my $jis_name = $$in{name};
> $jis_name = conv_jis($jis_name);
> $reply =~ s/!name!/$jis_name/ if ($cf{auto_res});
>
> このように追加してみたのですが、

この追加部分を元に戻して(削除)、340行目付近

# 自動返信ありのとき
my $reply;
if ($cf{auto_res}) {

# テンプレ
open(IN,"$cf{tmpldir}/reply.txt") or error("open err: reply.txt");
$reply = join('', <IN>);
close(IN);

# 改行
$reply =~ s/\r\n/\n/g;
$reply =~ s/\r/\n/g;

の次の行に

$reply =~ s/!name!/hex_decode($$in{'name'})/eg;

を追加して下さい。
以上です。


記事No: 13385
投稿日: 2014/10/18(Sat) 10:36:10
タイトル【解決】 Clipmail4.1の本文上部に名前name
ID情報: beams95
投稿者: わかお

てけてんさん、始めまして。ご指導いただき有難うございます!

先日、hirayamaさんに340行目辺りに追加する記述をお教えいただきましたが、その修正版をお教えくださったのかと思います。


clipmail.cgiの340行め辺り


# ★追加 メール本文の上部に名前追加 ←hirayamaさんご指導
$reply =~ s/!name!/$$in{name}/g;

# 改行
$reply =~ s/\r\n/\n/g;
$reply =~ s/\r/\n/g;

# ★追加 メール本文の上部に名前文字化け対処追加 ←てけてんさんご指導
$reply =~ s/!name!/hex_decode($$in{'name'})/eg;


最初は↑このようにお二人の記述を追加してみたのですが文字化けは直らず、下記のみに致しました。


# 改行
$reply =~ s/\r\n/\n/g;
$reply =~ s/\r/\n/g;

# ★追加 メール本文の上部に名前文字化け対処追加 ←てけてんさんご指導
$reply =~ s/!name!/hex_decode($$in{'name'})/eg;


↑こちらの記述のみにしましたら、無事にメール本文の上部に故意的に追加した「名前 !name!」が文字化けせずに稼働いたしました!

本当にありがとうございます!もうなんと感謝したらよいのやら…m(*ToT*)m


折角ここまで良いフォームが出来ましたので、もう一つ改良したい点がありまして、またお手すきでしたらご指導いただけますでしょうか…。


フォームの入力欄が増えてしまったのですが、入力をしない方もいらっしゃるので、そうすると、確認画面や自動返信のメールにズラズラズラーっと未入力の内容も記述されてしまうのが不親切に感じました。

clipmail他バージョンの過去ログを見ながら、この改良を行っているのですが、未入力の欄の非表示を行いたいのですが、同じように記述を変えると、メッセージが全く反応しなくなります。試してみた記述を別記事でお伝えしますので、またお時間のある時にでもお教えいただけましたら幸いです。


記事No: 13386
投稿日: 2014/10/18(Sat) 10:47:34
タイトルClipmail 4.1 未入力欄の非表示について
ID情報: beams95
投稿者: わかお

フォームの入力欄が増えてしまったのですが、入力をしない方もいらっしゃるので、そうすると、確認画面や自動返信のメールにズラズラズラーっと未入力の内容も記述されてしまうのが不親切に感じました。

clipmail他バージョンの過去ログを見ながら、この改良を行っているのですが、未入力の欄の非表示を行いたいのですが、同じように記述を変えると、メッセージが全く反応しなくなります。

下記、変更した個所を記しておきます。


clipmail.cgi


#---------------------------
# プレビュー
#---------------------------

240行目辺りに↓

if(!$$in{$key}) {$tmp='';}

250行目辺りに↓

$hidden .= qq|<input type="hidden" name="$key" value="$val" />\n|;

256行目辺りに↓

$hidden .= qq|<input type="hidden" name="$key" value="$$in{$key}" />\n| if($$in{$key});

270行目辺りに↓

if(!$$in{$key}) {$tmp='';}


#---------------------------
# 入力エラー表示 箇所
#---------------------------

720行目辺りに↓

if(!$$in{$key}) {$tmp='';} # ←こちらを追加


以上を追加しました。

やっている事は、確認画面やエラー画面の時に、未入力箇所は「hidden」で見えない情報として処理する?ということでしょうか。

上記を設定してしまうと、自動返信のメールがすべて反映しなくなりました。号泣。


何かしらご指導いただけましたら幸いです。


記事No: 13387
投稿日: 2014/10/19(Sun) 16:02:34
タイトルRe: Clipmail 4.1 未入力欄の非表示について
ID情報: hirayama
投稿者: hirayama
URLhttp://shade-search.com/sts/fsw/wiki.cgi

配列@$keyに格納された各キーについて
確認画面や自動返信の内容が記載されるようなので、
ハッシュ%$inで値を返さない該当キーを削除してしまうというが簡単なようです。
具体的には、変更部分を元に戻して、clipmail.cgi28行目の

my ($key,$need,$in) = parse_form();

の下あたりに

my @new_key = ();
foreach (@$key) {
push(@new_key,$_) if $$in{$_};
}
@$key = @new_key;

と追加してみてください


記事No: 13394
投稿日: 2014/10/20(Mon) 20:48:50
タイトル【解決】 Clipmail 4.1 未入力欄の非表示について
ID情報: beams95
投稿者: わかお
URLhttp://www.m-infinity.company/kreuse/contact/form.html

hirayamaさん、いつもありがとうございます!

先ほど、ご指示のとおりに修正しましたら、お客様情報以外のズラズラした未入力欄が表示されないようになりました!

確認画面でも表示されませんし、自動返信メールも表示されませんのでとてもスッキリです!!

本当に有難うございました(*T0T*)/
心から感謝いたします!!

新しいバージョンの改良なので、他の方のお役にも立っていただけましたら幸いです。


[検索ページ] [掲示板]