資料請求のお客様には、指定した内容のメールが届くのですが、当方に送られてくるメールは、サーバ名(たとえば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にとっては全く無知です。
フォームを増やすくらいなら出来る程度です。
よろしくお願いします。
さくらサーバではメールを送信する場合にCGIを一部変更しないと送信できません。
CGIのコードのどこかに
$sendmail = "/usr/lib/sendmail"
という記述があると思いますので、そこを
$sendmail = "/usr/sbin/sendmail";
に変更すれば送信できると思います。(lib⇒sbin)
コメント欄が使えないので、こちらに書きます。先ほどの回答も的外れでしたのでポイントは不要です。
資料請求の方にはメールが届いているということなので、設定は正しいのですね。勘違いしました、すみません。
請求者には正常に送信できるということなので、請求者にメールを送信する部分のコードをコピーして、
宛先を自分宛にかえて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
(略)
&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'}
------------------------------------------------------------
&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;
}
以上です。
これで、おわかりになるでしょうか。
たぶん,裏で動いてる sendmail が違うために,挙動が違うのでしょう(sendmail コマンドの実態は,qmail や Postfix もあります)
CGI は独自で書かれたものですか?それとも,誰かが公開されているものですか?
また,届いたコードのヘッダなどを見ても,どこにも本文は含まれていませんか?
sendmail に関しては、全くわかりません。
10年ぐらい前に知り合いに頼んだものだそうで、今は連絡とれない状態です。
誰かが公開しているものではないと思います。
秀丸メールで詳細を見てみましたが、ヘッダには本文はありませんでした。
From(送信者アドレス)が設定されていないのではありませんか。
だから、
送信者がサーバ名になり、
CCか BCCで送っているから宛先が undisclosed-recipients になるのです。
ご回答ありがとうございます。
省略しました。
送信元アドレスは設定されています。
私も「さくらサーバ」を使っていますので実験してみました。
From を意図的に設定しないで送信してみたら、届いたメールの From は次のようになっていました。
User Account <Account@wwwxxx.sakura.ne.jp>
この実験結果から推測するとやはり、私の前回回答のように From の設定が認識されていないのではないでしょうか。
$mail_data の値を示していただくともう少しましな回答ができるかもしれません。
コメントが付けられないのでこちらに書きます。
ところで、資料請求のお客様には指定した内容のメールが届くとのことですが、そのメールには送信元が正しく入っているのでしょうか。
お客様にも User Account <Account@wwwxxx.sakura.ne.jp> で送られているかも知れません。
参考までに私が使っているフォームメールCGIです。
↓
お客様への送信元はあっています。
参考のフォームメール、ありがとうございます。
現在のものが使えないと判断した時点で、参考にさせていただきます。
ご回答ありがとうございます。
この部分は既に変更済みです。