CGI-BBS > SO−HO > ショッピングバスケット > ショッピングv6で顧客アドレスミスでメールを受信できない


カレッヂ
カレッヂ


質問者 はる2  投稿日 2008/10/9(木) 19:39:05
ショッピングバスケット・プロ v6を使用しています。

顧客が、例えば
momosan@tubu.ocn.ne.jp と言うアドレスを、
momosan@tubu.ocn.jp(.neが無い)と言う誤り方をした場合に、
受注者側にも注文者側にもメール送信がされません。
tomosan@tubu.ocn.ne.jpなどと文字を誤った場合やには、
注文者側にはメールが届きませんが、受注者側には注文を受けたメールが
配信されます。
勿論アドレスに誤り無ければ両者にちゃんとメール配信されます。

momosan@tubu.ocn.jp(.neが無い)と言う誤り方をした場合でも、
注文を見逃してしまうので、受注者側には届くようにしたいです。
cart.cgiのオーダー処理sendmailの辺り(以下)を直せば良いような気がするのですが、
どのように直せば良いのか、どなたかご教授頂きたくお願い致します。


######################################################################################
#
# オーダー処理
#
######################################################################################

    1 while $date_num =~ s/(.*\d)(\d\d\d\d)/$1-$2/g;

    if (!open(INFO,$info_file)) { &error("#設定エラー","特定商取引に関する表\示について設定したファイルが見つかりません。"); }
    @info = <INFO>;
    close(INFO);

    if (open(ADDR,">> $order_csv")) {

        foreach $write (@formCSV) {

            if ($write eq '$NUMBER') { push(@CSV,$date_num); }
            elsif ($write eq '$ORDER') { $orders =~ s/\n//g; $orders =~ s/$doru//g; $orders =~ s/$enn//g; push(@CSV,$orders); }
            elsif ($write eq '$DATE') { push(@CSV,$date_now); }
            elsif ($write eq '$EMAIL') { push(@CSV,$in{'_email'}); }
            elsif ($write eq '$REMOTE_USER') { push(@CSV,$REMOTE_USER); }
            else {
                $write =~ s/&quot;/"/g;
                $write =~ s/&amp;/&/g;
                $write =~ s/&lt;/</g;
                $write =~ s/&gt;/>/g;

                push(@CSV,$in{$write});
            }
        }

        print ADDR &EncodeCSV(@CSV) . "\n";
        close(ADDR);
    }

#★ メール整形用サブルーチンへ
    &make_body;

#★ 表題の文字化け対策
    @subject = ("[$date_num] $mail_subject", "[$date_num] $copy_subject");
    $enc_subject1 = &mimeencode(shift @subject);
    $enc_subject2 = &mimeencode(shift @subject);

    if (!open OUT,"| $sendmail -f $in{'_email'} -t") { &error("異常停止",$!); }

    print OUT &jis("X-Processed: $date_now\n");
    print OUT "X-SENDER: $REMOTE_HOST\[$REMOTE_ADDR\]\n";
    print OUT &jis("X-AGENT: $HTTP_USER_AGENT\n");
    print OUT "Subject: $enc_subject1\n";
    print OUT "From: $in{'_email'}\n";
    print OUT "To: $mailto_order\n";
    print OUT "Content-Transfer-Encoding: 7bit\n";
    print OUT "Content-Type: text/plain; charset=iso-2022-jp\n\n";

    print OUT "\n";
    foreach (@soushin) {
        print OUT $_;
    }
    print OUT "\n";
    $sign =~ s/\n/\n /g;
    print OUT &jis(" $sign\n");
    close(OUT);

    sleep(1);

    if (!open OUT,"| $sendmail -f order@en.co.jp -t") { &error("異常停止",$!); }

    print OUT &jis("X-Processed: $date_now\n");
    print OUT "X-SENDER: $REMOTE_HOST\[$REMOTE_ADDR\]\n";
    print OUT &jis("X-AGENT: $HTTP_USER_AGENT\n");
    print OUT "Subject: $enc_subject2\n";
    print OUT "From: $mailto_order\n";
    print OUT "To: $in{'_email'}\n";
    print OUT "Content-Transfer-Encoding: 7bit\n";
    print OUT "Content-Type: text/plain; charset=iso-2022-jp\n\n";

    print OUT &jis("$mail_mes\n");
    print OUT "\n";
    foreach (@soushin) {
        print OUT $_;
    }

    print OUT "\n";
    print OUT "$keisen_5\n";
    print OUT &jis(" 特定商取引に関する法律による表\示\n");
    print OUT "$keisen_5\n";
    foreach (@info) { print OUT &jis($_); }
    print OUT "\n";
    print OUT &jis("$sign\n");
    close(OUT);

【プロバイダ】http://www.zuisoen.co.jp/item/list-yuuki.html#1
【習熟度】多少の設置経験

回答者 rescue  [削除]  投稿日 2008/10/14(火) 23:05:21
一般的には、送信先に間違いが無ければ、Fromに影響を受けずに配信されます。
しかし昨今では、sendmailの機能だと思いますが、Fromすなわち送信者の
メールアドレスのチェックや、同じプロバイダ内であれば配信ユーザの存在の有無が
その場でチェックされ、配信そのものがされない場合もあるようです。
これはCGIのレベルで処理するものではないので、次のようなアイデアで
うまく回避するしかないと思われます。

案

FromもToも送信先(自分)にし、Reply-Toに送信者を入れるようにしてみる。
もしかするとReply-Toもチェックされていれば、それも入れないようにしてみる。
質問者 はる2  [削除]  投稿日 2008/10/15(水) 00:41:08
 rescue様

ご指摘の通りプログラム変更することで対策できました。
ご教授ありがとうございました。とても感謝しております。

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


このページ:http://www.rescue.ne.jp/CGI-BBS/soho/cargo/20081009193905.shtml Web裏技