A: ご利用いただいているサーバーによってはperlのバージョンが異なる為、
記述を足していただきます。
通常cgi、php等の記述に関しましてはサポート外となります。
●webで配布されているcgiでご利用度の高いメールフォーム等について
下記内容の書き換えを参考にしてください。
他のCGIの場合$mail等で検索すると似たような構文が見つかると思います。
◇wwwとほほのwwwmail.cgiの場合
(折り返し文字数300の場合)174行目を以下の様に変更すると利用できるようになります。
user\@domain.netの部分はユーザによって異なります。
旧: unless (open(OUT, | $mailcmd -t)) {
新: unless (open(OUT, | $mailcmd -f user\@domain.net
-t)) {
◇kent-webのpostmail.cgiの旧バージョンの場合
(折り返し文字数300の場合)416行目を変更以下の様に変更すると利用できるようになります。
user\@domain.netの部分はユーザによって異なります。
旧: open(MAIL,| $mailprog -t) || &error(メール送信失敗);
新: open(MAIL,| $mailprog -f user\@domain.net -t) ||
&error(メール送信失敗);
◇kent-webのpostmail.cgiの新バージョンの場合
(折り返し文字数300の場合)504行目を変更以下の様に変更すると利用できるようになります。
user\@domain.netの部分はユーザによって異なります。
旧: open(MAIL,"| $sendmail -t -i") || &error("メール送信失敗");
新: open(MAIL,"| $sendmail -f user\@domain.net -t") || &error("メール送信失敗");
●上記以外の場合
perl cgi でsendmail によるメール送信は.cgiファイルの中の
if ( open ( MAIL, | /usr/sbin/sendmail -t ) ) { ;
}
としているところを
if ( open ( MAIL, | /usr/sbin/sendmail -f domain_name\@domain_name.com
-t ) ) { ; }
と変更してください。
つまり -f domain_name\@domain_name.com を追加してください。
なお念のため申しそえますと
コマンドの意味では /usr/sbin/sendmail -f domain_name@domain_name.com
-t
なのですが
perl 文の 内では @ だけではエラーとなるので ESCAPE の \をいれて domain_name\@domain_name.com
としてます。
なお、-f の後のアドレス ここでは domain_name@domain_name.com は
メールの
header の 一行目の Return-path または コロン(:) のつかない From に現れます。
●php系の場合
phpによるmailの送信は
下記の function mail555 を php のはじめの方に置いて( <? ?>
内で)
通常の PHPの
mail ( $to , $subject, $mes , $header ) ;
を
mail555 ( $to , $subject, $mes , $header , $from )
;
に置き換えてください。
$from 引き数が一つ増えて いる点にご注意ください。
$header が不要なときは としてください。
$header の例は
$header=cc: aa@bb.com
Bcc: aaa@bb.com ;
等です。
::: send1.php の例 はじめ
<HTML>
<?
//// function mail555のはじめ
function mail555 ( $to , $subject, $mes , $header
, $from )
{
$pipe = popen ( /usr/local/bin/nkf -j | /usr/sbin/sendmail
-f $from -t ,w) ;
if ( $pipe ) {; } else { print canot popen sendmail
-f $from -t <BR>
; return (-1) ; }
fwrite ( $pipe , To: $to
) ;
fwrite ( $pipe , From: $from
) ;
fwrite ( $pipe , Subject: $subject
) ;
if ( $header != ) { fwrite ( $pipe , $header
) ; }
fwrite ( $pipe ,
) ;
fwrite ( $pipe , $mes
) ;
pclose ( $pipe) ;
return (0) ;
}
//// function mail555の終り
$to=tech@ns1.kabir-ken.com ;
$mes01=Sorry This test mail by http://www.kabir-ken.com/.s/send1.php
;
$fromaddress=tech@ns1.kabir-ken.com ;
$header00= cc: tech@ns1.kabir-ken.com ;
$subject = Testmail sorry ;
mail555 ( $to , $subject , $mes01 , $header00, $fromaddress
) ;
print Test mail $to $subject $mes01 From: $fromaddress
;
?>
</HTML>
::: send1.php の例 終り
|