Php smtp Class php smtp class
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-> host_name = "smtp.163.com "; // is used in HELO command $ this-> log_file = ""; $ this-> sock = FALSE;}/* Main Function */function sendm Ail ($ to, $ from, $ subject = "", $ body = "", $ mailtype, $ cc = "", $ bcc = "", $ additional_headers = "") {$ header = ""; $ mail_from = $ this-> get_address ($ this-> strip_comment ($ from )); $ body = mb_ereg_replace ("(^ | (\ r \ n ))(\\.) "," \ 1. \ 3 ", $ body); $ header. = "MIME-Version: 1.0 \ r \ n"; if ($ mailtype = "HTML") {// mail sending type // $ header. = "Content-Type: text/html \ r \ n"; $ header. = 'content-type: text/html; charset = Utf-8 '. "\ r \ n" ;}$ header. = "To:". $ to. "\ r \ n"; if ($ cc! = "") {$ Header. = "Cc :". $ cc. "\ r \ n" ;}$ header. = "From :". $ from. "\ r \ n"; // $ header. = "From: $ from <". $ from. "> \ r \ n"; // only the email address is displayed here, which is not user-friendly $ header. = "Subject :". $ subject. "\ r \ n"; $ header. = $ additional_headers; $ header. = "Date :". date ("r "). "\ r \ n"; $ header. = "X-Mailer: By (PHP /". phpversion (). ") \ r \ n"; list ($ msec, $ sec) = explode ("", microtime (); $ header. = "Message-ID: <". date ("Y MdHis ", $ sec ). ". ". ($ msec * 1000000 ). ". ". $ mail_from. "> \ r \ n"; $ TO = explode (",", $ this-> strip_comment ($ to); if ($ cc! = "") {$ TO = array_merge ($ TO, explode (",", $ this-> strip_comment ($ cc ))); // merge one or more arrays} 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 ". $ 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-> user) {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: <". $. ">") {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_sockopen_mx ($ address);} else {return $ this-> smtp_sockopen_relay ();}} function smtp_sockopen_relay () {$ this-> log_write ("Trying ". $ this-> relay_host. ":". $ this-> smtp_port. "\ n"); $ this-> sock = @ fsockopen ($ thi S-> 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 = ereg_replace ("^. + @ ([^ @] +) $ "," \ 1 ", $ address); if (! @ Getmxrr ($ domain, $ MXHOSTS) {$ this-> log_write ("Error: Cannot resolve MX \"". $ domain. "\" \ n "); return FALSE;} foreach ($ MXHOSTS as $ host) {$ this-> log_write (" Trying ". $ 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, $ B Ody) {fputs ($ this-> sock, $ header. "\ r \ n ". $ body); $ this-> smtp_debug ("> ". str_replace ("\ r \ 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 (! Mb_ereg ("^ [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 (! @ File_exists ($ this-> log_file) |! ($ Fp = @ fopen ($ this-> log_file, "a") {$ this-> smtp_debug ("Warning: Cannot open log file \"". $ this-> log_file. "\" \ n "); return FALSE;} flock ($ fp, LOCK_EX); fputs ($ fp, $ message); fclose ($ fp); return TRUE ;} function strip_comment ($ address) {$ comment = "\ ([^ ()] * \)"; while (mb_ereg ($ comment, $ address )) {$ address = mb_ereg_replace ($ comment, "", $ address);} return $ address;} function get_address ($ address) {$ address = mb_ereg_replace ("([\ t \ r \ n]) +", "", $ address); $ address = mb_ereg_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 ;}}
2. [File] email. demo. php
"; // SMTP server user email $ smtpemailto = $ mailto; $ smtpuser =" mservice@163.com "; // SMTP server user account $ smtppass =" 12345678 "; // SMTP server user password $ mailsubject = $ mailsub; // mail subject $ mailsubject = "=? UTF-8? B? ". Base64_encode ($ mailsubject )."? = "; // Prevent garbled characters $ mailbody = $ mailbd; // mail content // $ mailbody =" =? UTF-8? B? ". Base64_encode ($ mailbody )."? = "; // Prevent garbled characters $ mailtype =" HTML "; // The email format (HTML/TXT). TXT is a text email. 139 text message reminders in the mailbox must be set to HTML for normal ############################# ############# $ smtp = new smtp ($ smtpserver, $ smtpserverport, true, $ smtpuser, $ smtppass); // Here, true indicates that authentication is used; otherwise, authentication is not used. $ smtp-> debug = FALSE; // whether to display the sent debugging information $ smtp-> sendmail ($ smtpemailto, $ smtpusermail, $ mailsubject, $ mailbody, $ mailtype );}
The above is the smtp class content of php. For more information, see PHP Chinese network (www.php1.cn )!