今まで難なく使えていた資料請求用の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にとっては全く無知です。
フォームを増やすくらいなら出来る程度です。

よろしくお願いします。

回答の条件
  • 1人3回まで
  • 登録:
  • 終了:2008/12/24 22:40:03
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答6件)

id:tomqlo No.1

回答回数22ベストアンサー獲得回数2

ポイント19pt

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

 

CGIのコードのどこかに

$sendmail = "/usr/lib/sendmail"

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

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

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

id:rasa_25

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

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

2008/12/17 23:04:07
id:tomqlo No.2

回答回数22ベストアンサー獲得回数2

ポイント19pt

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

 

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

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

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

 

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

 

id:rasa_25

#!/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;

}

以上です。

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

2008/12/23 22:56:42
id:goodvn No.3

回答回数228ベストアンサー獲得回数18

ポイント18pt

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

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

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

id:rasa_25

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

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

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

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

2008/12/23 22:59:16
id:motokun44 No.4

回答回数42ベストアンサー獲得回数6

ポイント18pt

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

だから、

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

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

id:rasa_25

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

省略しました。

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

2008/12/19 14:22:04
id:motokun44 No.5

回答回数42ベストアンサー獲得回数6

ポイント18pt

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

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

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

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

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

id:motokun44 No.6

回答回数42ベストアンサー獲得回数6

ポイント18pt

コメントが付けられないのでこちらに書きます。

ところで、資料請求のお客様には指定した内容のメールが届くとのことですが、そのメールには送信元が正しく入っているのでしょうか。

お客様にも User Account <Account@wwwxxx.sakura.ne.jp> で送られているかも知れません。

参考までに私が使っているフォームメールCGIです。

http://webmastertool.jp/f2mail.html

id:rasa_25

お客様への送信元はあっています。

参考のフォームメール、ありがとうございます。

現在のものが使えないと判断した時点で、参考にさせていただきます。

2008/12/23 22:02:23

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません