PHPでフォーム送信時にメールが自動送信される問題について。
私が最近構築したウェブサイトには、フォームを送信すると、指定したメールアドレスにフォームの内容が自動的に送信される機能があります。私は PHP については比較的初心者ですが、Web サイトの背後にある CMS は PHP なので、覚悟を決めてここに来るしかありませんでした。インターネット上で人気のあるコードを見つけました。次に、私の質問は、この PHP コードをフォームに接続する方法です。今からコードを投稿して、皆さんに協力をお願いします。
class smtp
{
/* パブリック変数 */
var $smtp_port;
var $time_out;
var $host_name;
var $log_file;
var $relay_host;
var $debug;
var $auth;
var $user;
var $pass;
/* プライベート変数 */
var $sock;
/* コンストラクター */
function smtp($relay_host = "", $smtp_port = 25,$auth = false,$user,$pass)
{
$this->debug = FALSE;
$this->smtp_port = $smtp_port;
$this->relay_host = $relay_host;
$this->time_out = 30; // fsockopen()
#
$this->auth = $auth;//auth
$this->user = $user;
$this- >pass = $pass;
#
$this->host_name = "localhost" //HELO コマンドで使用されます
$this->log_file ="";
$this->sock = FALSE;
}
/* Main Function */
function sendmail($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $bcc = "", $Additional_headers = "")
{
$header="";
$mail_from = $this->get_address($this- >strip_comment($from));
$body = ereg_replace("(^|(rn))(\.)", "\1.\3", $body);
$header .= "MIME-Version:1.0rn";
if($mailtype=="HTML"){
$header .= "Content-Type:text/htmlrn";
}
$header . = "To: ".$to."rn";
if ($cc != "") {
$header .= "Cc: ".$cc."rn";
}
$header .= "from: $from<".$from.">rn";
$header .= "件名: ".$subject."rn";
$header .= $ added_headers;
$header .= "日付: ".date("r")."rn";
$header .= "X-Mailer:By Redhat (PHP/".phpversion().") rn";
list($msec, $sec) =explode(" ", microtime());
$header .= "メッセージID: <".date("YmdHis", $sec) .".".($msec*1000000).".".$mail_from.">rn";
$TO =explode(",", $this->strip_comment($to));
if ($cc != "") {
$TO = array_merge($TO,explode(",", $this->strip_comment($cc)));
}
if ($bcc != "") {
$TO = array_merge($TO,explode(",", $this->strip_comment($bcc)));
}
$sent = TRUE;
foreach ($TO as $rcpt_to) {
$rcpt_to = $this->get_address($rcpt_to);
if (!$this-> smtp_sockopen($rcpt_to)) {
$this->log_write("エラー: ".$rcpt_to."n に電子メールを送信できません");
$sent = FALSE;
続行;
}
if ($this->smtp_send($this->host_name, $mail_from, $rcpt_to, $header, $body)) {
$this->log_write("電子メールは<".$rcpt_to.">n に送信しました);
} else {
$this->log_write("エラー: <".$rcpt_to.">n にメールを送信できません");
$sent = FALSE;
}
fclose($this->sock);
$this->log_write("リモート ホスト n から切断されました");
}
echo "
";
echo $header;
return $sent;
}
/* プライベート関数 */
function smtp_send( $helo, $from, $to, $header, $body = "")
{
if (!$this->smtp_putcmd("HELO", $helo)) {
return $this ->smtp_error("HELO コマンドを送信中");
}
#auth
if($this->auth){
if (!$this->smtp_putcmd("AUTH LOGIN) ",base64_encode($this->user))) {
return $this->smtp_error("HELO コマンドの送信");
}
if (!$this-> smtp_putcmd("",base64_encode($this->pass))) {
return $this->smtp_error("HELO コマンドの送信中");
}
}
#
if (!$this->smtp_putcmd("MAIL", "from:<".$from.">")) {
return $this->smtp_error("コマンドから MAIL を送信中");