About php Send mail two classes (for a long time ...) )
need to send mail with PHP, do not want to phpmailer so complex, find to find, finally found a good, share out, PHP Mail Send class, total contains two files. The code is as follows:
sent_mail.php
This is a test program ";//message content $mailtype =" HTML ";//Message Format (html/txt), TXT for text mail ########################################## $smtp = new SMTP ($smtpserver, $smtpserverport, True, $smtpuser, $smtppass);//A true in this indicates that authentication is used, otherwise no authentication is used. $SMTP->debug = true;//whether to display debug information sent $smtp->sendmail ($smtpemailto, $smtpusermail, $mailsubject, $mailbody, $mailtype);? >
email.class.php
debug = FALSE; $this->smtp_port = $smtp _port; $this->relay_host = $relay _host; $this->time_out = 30; is used in Fsockopen () # $this->auth = $auth;//auth $this->user = $user; $this->pass = $pass; # $this->host_name = "localhost"; is used in HELO command $this->log_file = ""; $this->sock = FALSE; }/* Main function */function SendMail ($to, $from, $subject = "", $body = "", $mailtype, $cc = "", $BCC = "", $addi Tional_headers = "") {$mail _from = $this->get_address ($this->strip_comment ($from)); $body = Preg_replace ("/(^| ( \ r \ n)) (\ \) /"," \\1.\\3 ", $body); $header = "mime-version:1.0\r\n"; if ($mailtype = = "HTML") {$header. = "content-type:text/html\r\n"; } $header. = "To:". $to. "\ r \ n"; if ($cc! = "") {$header. = "CC:". $CC. "\ r \ n"; } $header. = "From: $from <". $froM. ">\r\n"; $header. = "Subject:". $subject. "\ r \ n"; $header. = $additional _headers; $header. = "Date:". Date ("R"). "\ r \ n"; $header. = "X-mailer:by Redhat (php/". Phpversion (). ") \ r \ n"; List ($msec, $sec) = Explode ("", Microtime ()); $header. = "Message-id: <". Date ("Ymdhis", $sec). "." . ($MSEC * 1000000). "." . $mail _from. ">\r\n"; $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 ("Error:cannot send email to". $RCPT _to. "\ n"); $sent = FALSE; Continue } if ($this->smtp_send ($this->host_name, $mail _from, $rcpt _to, $header, $body)) {$this Log_write ("e-mail has been sent to <". $rcpt _to. ">\n"); } else {$this->log_write ("Error:cannot Send email to <". $rcpt _to. ">\n"); $sent = FALSE; } fclose ($this->sock); $this->log_write ("Disconnected from remote host\n"); } echo "
"; Echo $header; return $sent; }/* Private Functions */function Smtp_send ($helo, $from, $to, $header, $body = "") {if (! $this->SMTP _putcmd ("HELO", $helo)) {return $this->smtp_error ("Sending HELO command"); } #auth if ($this->auth) {if (! $this->smtp_putcmd ("Auth LOGIN", Base64_encode ($this->u Ser)) {return $this->smtp_error ("Sending HELO command"); } if (! $this->smtp_putcmd ("", Base64_encode ($this->pass)) {return $this->smtp_error (" Sending HELO command "); }} # if (! $this->smtp_putcmd ("MAIL", "from:<". $from. ">") {return $this->smtp_error ("Sending MAIL from command"); if (! $this->smtp_putcmd ("RCPT", "to:<". $to. ">") {return $this->smtp_error ("Sending RCPT to command"); } if (! $this->smtp_putcmd ("DATA")) { return $this->smtp_error ("Sending DATA command"); } if (! $this->smtp_message ($header, $body)) {return $this->smtp_error ("Sending message"); } if (! $this->smtp_eom ()) {return $this->smtp_error ("Sending
.
[EOM] "); } if (! $this->smtp_putcmd ("Quit")) {return $this->smtp_error ("Sending quit Command"); } return TRUE; } function Smtp_sockopen ($address) {if ($this->relay_host = = "") {return $this->smtp_socko PEN_MX ($address); } else {return $this->smtp_sockopen_relay (); }} function Smtp_sockopen_relay () {$this->log_write ("Trying to"). $this->relay_host. ":" . $this->smtp_port. "\ n"); $this->sock = @fsockopen ($this->relay_host, $this->smtp_port, $errno, $errstr, $this->time_out); if (! ( $this->sock && $this->smtp_ok ()) {$this->log_write ("Error:cannot connenct to relay host"). $this->relay_host. "\ n"); $this->log_write ("Error:".) $errstr. " (" . $errno. ") \ n"); return FALSE; } $this->log_write ("Connected to relay host". $this->relay_host. "\ n"); return TRUE; } function Smtp_sockopen_mx ($address) {$domain = Preg_replace ("/^.+@ ([^@]+) $/", "\\1", $address); if ([email protected] ($domain, $MXHOSTS)) {$this->log_write ("error:cannot resolve MX \" ". $domain. "\" \ n "); return FALSE; } foreach ($MXHOSTS as $host) {$this->log_write ("Trying to"). $host. ":" . $this->smtp_port. "\ n"); $this->sock = @fsockopen ($host, $this->smtp_port, $errno, $errstr, $this->time_out); if (! ( $this->sock && $this->smtp_ok ()) {$this->log_write ("Warning:cannot Connect to MX host") . $host. "\ n"); $this->log_write ("Error:".) $errstr. " (" . $errno. ") \ n"); Continue } $this->log_write ("Connected to MX host". $host. "\ n"); return TRUE; } $this->log_write ("Error:cannot connect to any MX hosts (". Implode (", ", $MXHOSTS).") \ n "); return FALSE; } function Smtp_message ($header, $body) {fputs ($this->sock, $header. "\ r \ n". $body); $this->smtp_debug (">". Str_replace ("\ n", "\ n"). ">", $header. " \n> ". $body. "\n>")); return TRUE; } function Smtp_eom () {fputs ($this->sock, "\r\n.\r\n"); $this->smtp_debug (". [eom]\n "); return $this->SMTP_OK (); } function Smtp_ok () {$response = Str_replace ("\ r \ n", "", Fgets ($this->sock, 512)); $this->smtp_debug ($response. "\ n"); if (!preg_match ("/^[23]/", $response)) {fputs ($this->sock, "quit\r\n"); Fgets ($this->sock, 512); $this->log_write ("Error:remote host returned \" ". $response. "\" \ n "); return FALSE; } return TRUE; } function Smtp_putcmd ($cmd, $arg = "") {if ($arg! = "") {if ($cmd = = "") $cmd = $arg; else $cmd = $cmd. " " . $arg; } fputs ($this->sock, $cmd. "\ r \ n"); $this->smtp_debug (">". $cmd. "\ n"); return $this->SMTP_OK (); } function Smtp_error ($string) {$this->log_write ("Error:error occurred while". $string. ". \ n"); return FALSE; } function Log_write ($message) {$this->smtp_debug ($message); if ($this->log_file = = "") {return TRUE; } $message = Date ("M D h:i:s"). Get_current_user (). "[" . Getmypid (). "]: " . $message; if ([Email protected]_exists ($this->log_file) | |! ( $fp = @fopen ($this->log_file, "a")) {$this->smtp_debug ("warning:cannot open log file \". $this->l Og_file. "\" \ n "); return FALSE; } flock ($FP, LOCK_EX); Fputs ($fp, $message); Fclose ($FP); return TRUE; } function Strip_comment ($address) {$comment = "/\\ ([^ ()]*\\)/"; while (PREG_MATCH ($comment, $address)) {$address = Preg_replace ($comment, "", $address); } return $address; } function Get_address ($address) {$address = Preg_replace ("/([\t\r\n]) +/", "", $address); $address = Preg_replace ("/^.*< (. +) >.*$/", "\\1", $address); return $address; } function Smtp_debug ($message) {if ($this->debug) {echo $message. "
"; }} function Get_attach_type ($image _tag) {//$filedata = Array (); $img _file_con = fopen ($image _tag, "R"); unset ($image _data); while ($tem _buffer = addslashes (fread ($img _file_con, FileSize ($image _tag))) $image _data = $tem _buffer; Fclose ($img _file_con); $filedata [' context '] = $image _data; $filedata [' filename '] = basename ($image _tag); $extension = substr ($image _tag, Strrpos ($image _tag, "."), strlen ($image _tag)-Strrpos ($image _tag, ".")); Switch ($extension) {case ". gif": $filedata [' type '] = "image/gif"; Break Case ". Gz": $filedata [' type '] = "application/x-gzip"; Break Case ". htm": $filedata [' type '] = "text/html"; Break Case ". html": $filedata [' type '] = "text/html"; Break Case ". jpg": $filedata [' type '] = "Image/jpeg"; Break Case ". Tar": $filedata [' type '] = "Application/x-tar"; Break Case ". txt": $filedata [' type '] = "text/plain"; Break Case ". zip": $filedata [' type '] = "application/zip"; Break Default: $filedata [' type '] = "application/octet-stream"; Break } return $filedata; }}//End Class?>
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.