人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

今まで難なく使えていた資料請求用のCGIがさくらサーバーにした途端、以下のような不都合が起こって困っています。
資料請求のお客様には、指定した内容のメールが届くのですが、当方に送られてくるメールは、サーバ名(たとえばwww111a.sakura.ne.jp)から届き、宛先は、undisclosed-recipients:; になって届き、本文が全くありません。

CGIは、
#!/usr/bin/perl
require "cgi-lib.pl";
require "jcode.pl";
&ReadParse;

#--
#|初期設定|

# フォーム送信先アドレス
$mailto = 'aaa@bbb.co.jp';

(省略)

MAIL

&jcode'convert(*mail_data,'jis');

open(MAIL, "| $sendmail $mailto") || &error("Can\'t sendmail: $!");
print MAIL $mail_data;
close(MAIL);

print "Location: $location\n\n";

exit;
}

(省略)
---
以上となっております。
私は、CGIにとっては全く無知です。
フォームを増やすくらいなら出来る程度です。

よろしくお願いします。


●質問者: rasa_25
●カテゴリ:コンピュータ ウェブ制作
✍キーワード:AAA CGI co.jp EXIT JIS
○ 状態 :終了
└ 回答数 : 6/6件

▽最新の回答へ

1 ● tomqlo
●19ポイント

さくらサーバではメールを送信する場合にCGIを一部変更しないと送信できません。

CGIのコードのどこかに

$sendmail = "/usr/lib/sendmail"

という記述があると思いますので、そこを

$sendmail = "/usr/sbin/sendmail";

に変更すれば送信できると思います。(lib⇒sbin)

◎質問者からの返答

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

この部分は既に変更済みです。


2 ● tomqlo
●19ポイント

コメント欄が使えないので、こちらに書きます。先ほどの回答も的外れでしたのでポイントは不要です。

資料請求の方にはメールが届いているということなので、設定は正しいのですね。勘違いしました、すみません。

請求者には正常に送信できるということなので、請求者にメールを送信する部分のコードをコピーして、

宛先を自分宛にかえてCGIに貼り付ければ、自分にも正常に送信できるはずです。

もう少し、省略されている部分を教えていただければ、具体的なコードを書くことができるのですが・・・。

◎質問者からの返答

#!/usr/bin/perl

require "cgi-lib.pl";

require "jcode.pl";

&ReadParse;

#--------------------------------------------------------------------------------------------------------------------------------------------

#|初期設定|

# フォーム送信先アドレス

$mailto = 'aaa@bbb.co.jp';

$mailto2 = 'ccc@bbb.co.jp';

# フォーム内容を送付するメールのタイトル

$subject = 'ご注文ありがとうございます。';

# 送信完了メッセージ用HTMLのURL

$location = 'thank.html';

# sendmail

$sendmail = '/usr/sbin/sendmail';

#送信元メールアドレス

$From ='ddd@bbb.co.jp';

#オーダーメールのタイトル

$subject2 = 'オーダーメール';

----

省略

請求者宛(届いている方)のメール

---

---

# フォームの送信

sub sendmail {


$mail_data = <<MAIL;</p>

X-Mailer: aaa

To: $mail

From: $From

Subject: $subject

Content-Transfer-Encording: 7bit

Content-Type: text/plain

(略)

MAIL

&jcode'convert(*mail_data,'jis');

open(MAIL, "| $sendmail $mail") || &error("Can\'t sendmail: $!");

print MAIL $mail_data;

close(MAIL);

print "Location: $location\n\n";


これ以下が、上記の続きに書かれたサーバ名(たとえばwww111a.sakura.ne.jp)から届き、宛先は、undisclosed-recipients:; になって届くメール

---

$mail_data = <<MAIL;</p>

X-Mailer: aaa

To: $From

From: $mail

Subject: $subject2

Content-Transfer-Encording: 7bit

Content-Type: text/plain

(略)

------------------------------------------------------------

REMOTE_ADDR :$ENV{'REMOTE_ADDR'}

HTTP_USER_AGENT:$ENV{'HTTP_USER_AGENT'}

------------------------------------------------------------

MAIL

&jcode'convert(*mail_data,'jis');

open(MAIL, "| $sendmail $mailto2 $mailto") || &error("Can\'t sendmail: $!");

print MAIL $mail_data;

close(MAIL);

print "Location: $location\n\n";

exit;

}

以上です。

これで、おわかりになるでしょうか。


3 ● goodvn
●18ポイント

たぶん,裏で動いてる sendmail が違うために,挙動が違うのでしょう(sendmail コマンドの実態は,qmail や Postfix もあります)

CGI は独自で書かれたものですか?それとも,誰かが公開されているものですか?

また,届いたコードのヘッダなどを見ても,どこにも本文は含まれていませんか?

◎質問者からの返答

sendmail に関しては、全くわかりません。

10年ぐらい前に知り合いに頼んだものだそうで、今は連絡とれない状態です。

誰かが公開しているものではないと思います。

秀丸メールで詳細を見てみましたが、ヘッダには本文はありませんでした。


4 ● motokun44
●18ポイント

From(送信者アドレス)が設定されていないのではありませんか。

だから、

送信者がサーバ名になり、

CCか BCCで送っているから宛先が undisclosed-recipients になるのです。

◎質問者からの返答

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

省略しました。

送信元アドレスは設定されています。


5 ● motokun44
●18ポイント

私も「さくらサーバ」を使っていますので実験してみました。

From を意図的に設定しないで送信してみたら、届いたメールの From は次のようになっていました。

User Account <Account@wwwxxx.sakura.ne.jp>

この実験結果から推測するとやはり、私の前回回答のように From の設定が認識されていないのではないでしょうか。

$mail_data の値を示していただくともう少しましな回答ができるかもしれません。


1-5件表示/6件
4.前の5件|次5件6.
関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ