アプリ版:「スタンプのみでお礼する」機能のリリースについて

フリーのCGIにて下記の不具合が出ています。
修正を頼まれているのですが、よくわからず
作者に連絡がとれない状態ですので
お力を貸していただけると助かります。
ソースが必要かと思うのですが、長いので
どこを書くべきかもわかりません。
どの部分を書くべきかのご指示もお願いしたく
よろしくお願い申し上げます。

【CGIの内容】
sendmailを用いた、フォームデータのメール送信。
フォーム入力者へはToで確認メールを送り、
そのメールをBccで自分にも送る。

【不具合内容】
たまにBccのみ送信されない。(受信が出来ない?)
Toの相手(フォーム入力者)には届いている。
「たまに」という状態なのでなかなか再現も出来ず困っています。

A 回答 (5件)

何が起きているのかを調べるのが先決でしょうね。


メールが送られない場合はエラーが戻ると思うのですが、そのエラーをどこに戻すようにしているか。
それを管理可能なメールアドレスに戻るように設定して、どんなエラーになっているかを確認してみてください。

メールログが閲覧可能ならばそれをチェックですね。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

エラーメールは届いていないので
サーバのログを見てみましたら
Invalid URI in request POSTを発見しましたが
時間が30分ほど後でしたのであまり関係がないように思います。

エラーなどがまったく起きず、Toには送れるのに
Bccには送れないといった現象が起こることもありますでしょうか?
毎回起こるわけではない(ほとんどの場合はおきない)ので
バグなのか何なのかもわからない状態です。

お手数をお掛けします。

お礼日時:2009/12/01 11:05

>&error('システム異常','\申し訳ありませんが何らかの原因で処理できません.');


>「\申し訳ありませんが・・・」の \ は不要です。これですと \ そのものが表示されます。

多分このスクリプトは Shift_JIS で書かれているのでは?
まぁそうだとしてもエスケープする位置が間違っているのですが。

&error('システム異常','申\し訳ありませんが何らかの原因で処理できません.');

おそらくこうしたかったのでは?
    • good
    • 0

コードそのものにはBCCに関しては特に問題は無いようですね。



print OUT "Bcc: $ad_email\n"; は無しにして
print OUT "To: $email,$ad_email\n"; としてみるとか。

または、メール送信部分をコピーして、To: に $ad_email を入れて別々に送信するようにしてみるとか。テストしてみてはいかがですか。


ところで、BCCとは関係ないですが、気になったところです。

&error('システム異常','\申し訳ありませんが何らかの原因で処理できません.');
「\申し訳ありませんが・・・」の \ は不要です。これですと \ そのものが表示されます。

print OUT "Return-Path: $ret_path_mail\n";
これでは Return-Path: はセットできません。 -fスイッチを使います。

&jis("Subject: $FORM{'subject'}");
print OUT &jis("Subject: $FORM{'subject'}"); としないと、それと
charset="ISO-2022-JP" なら MIMEエンコードはされていますか。ならば、
MIME-Version: 1.0 ヘッダが必要です。

print OUT "$msg\n";
ヘッダの出力完了前に $msg(本文)を出してはだめです。(typoですか?)
    • good
    • 0
この回答へのお礼

いろいろいけないところがあったのですね。
そういうところを全て直せば解決するかもしれませんね。
フリーのものを少しいじっただけのようでして
古くから使っているそうなので
きちんと見直す時期に来ているのかもしれません。

とりあえずmaillogが見れるまで上記修正して様子を見てみます。
ありがとうございました。

お礼日時:2009/12/02 11:39

#1です。


maillogにエラーがないとすると、先方までは届いていると言うことになります。
宛先アドレスでログをサーチすれば送信成功のログが出てくるでしょう。

こうなると、今度は受信側の問題が考えられます。
送るメールの内容などによってspam判定されてしまうとか、或いは送り側のspf設定がうまく行っていないとか、可能性は低いと思いますがブラックリストに載っているとか。

送り先のメールサーバのログが見られればいいのですが。

この回答への補足

見ていたログはサーバのエラーログで
maillogではなかったのでもう一度見直して見ます。
といってもおそらくレンタルサーバなので
見れるかどうかも心配なのですが・・・

補足日時:2009/12/02 11:33
    • good
    • 0

sendmail にメールヘッダを書き出している部分を示していただくと的確な回答ができるかもしれません。

この回答への補足

ヘッダの部分は下記のようなソースで書き出してまして
Toで届いているメールを見てみますと
Fromに入っているアドレスが正しく表示されていますので
Bccにも正しく設定できているように思うのですが・・・

こんな断片的なソースで大丈夫でしょうか?

if (!(open(OUT,"| $sendmail -t"))) { &error('システム異常','\申し訳ありませんが何らかの原因で処理できません.'); }
$ad_email =~ s/\:/\,/g;
print OUT "Errors-To: $err_path_mail\n";
print OUT "Return-Path: $ret_path_mail\n";
print OUT "To: $email\n";
print OUT "Bcc: $ad_email\n";
print OUT "From: $ad_email\n";

&jis("Subject: $FORM{'subject'}");
print OUT "$msg\n";
print OUT "Content-Transfer-Encoding: 7bit\n";
print OUT "Content-Type: text/plain\; charset=\"ISO-2022-JP\"\n\n";

補足日時:2009/12/01 21:34
    • good
    • 0

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