Share the email sending class in your framework, hoping to help you, and provide a small example for your convenience. SMTP class: Smtp. class. php? Php *** SMTP class ** @ packageDolrPHP * @ authorJoychao * @ versionv2.0 * @ copyrightCopyright (c) 2012.DolrPHP.com * @ modifierJ
Share the email sending class in your framework, hoping to help you, and provide a small example for your convenience. SMTP class: Smtp. class. php? Php/*** SMTP class ** @ package DolrPHP * @ author Joy chao * @ version v2.0 * @ copyright Copyright (c) 2012. DolrPHP.com * @ modifier J
Share the email sending class in your framework, hoping to help you, and provide a small example for your convenience.
SMTP class: Smtp. class. php
Debug = FALSE; $ this-> smtp_port = trim ($ smtp_port); $ this-> smtp_host = trim ($ smtp_host); $ this-> time_out = 30; // is used in fsockopen () $ this-> auth = trim ($ auth); // auth $ this-> user = trim ($ user ); $ this-> pass = trim ($ pass); $ this-> host_name = "localhost"; // is used in HELO command $ this-> log_file = ''; $ this-> sock = FALSE;}/*** main method for sending emails * @ param string $ to recipient * @ param string $ mail_from sender Person * @ param string $ subject * @ param string $ body content * @ param string $ mailtype mail type (HTML/TXT) * @ param string $ cc * @ param string $ bcc * @ param string $ additional_headers additional header information * @ return boolean success or failure */function sendmail ($, $ mail_from, $ subject = '', $ body ='', $ mailtype = "HTML", $ cc = '', $ bcc ='', $ additional_headers = '') {$ to = trim ($ to); $ stringEncode = mb_detect_encoding ($ bod Y, array ('utf-8', 'gbk', 'ascii ', 'gb2312'); $ subject = iconv ($ stringEncode, 'utf-8 ', $ subject); $ body = iconv ($ stringEncode, 'utf-8', $ body); $ body = preg_replace ("/(^ | (\ r \ n )) (\.) /"," \ 1. \ 3 ", base64_encode ($ body); $ header =" MIME-Version: 1.0 \ r \ n "; if (strtoupper ($ mailtype) =" HTML ") {$ header. = "Content-Type: text/html; charset = UTF-8 \ r \ n" ;}$ header. = "Content-Transfer-Encoding: base64 \ n"; $ header. = "To:". $ to. "\ r \ n"; if ($ cc! = '') {$ Header. = "Cc :". $ cc. "\ r \ n" ;}$ header. = "From :". $ this-> get_mailfrom ($ this-> user, $ mail_from ). "\ r \ n"; $ header. = "Subject :". $ subject. "\ r \ n"; $ header. = $ additional_headers; $ header. = "Date :". date ("r "). "\ r \ n"; $ header. = "X-Mailer: By Apache (PHP /". phpversion (). ") \ r \ n"; list ($ msec, $ sec) = explode ('', microtime (); $ header. = "Message-ID: <". date ('ymdhis ', $ s Ec ). ". ". ($ msec * 1000000 ). ". ". substr ($ mail_from, strpos ($ 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 ". $ rcpt_to. "\ n"); $ sent = FALSE; continue;} if ($ this-> smtp_send ($ this-> host_name, $ this-> user, $ 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");} return $ sent;}/*** send email * @ access public */function smtp_send ($ helo, $ from, $ to, $ header, $ body = '') {if (! $ This-> smtp_putcmd ("HELO", $ helo) {return $ this-> smtp_error ("sending HELO command");} // authif ($ 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-> smtp_host = '') {return $ this-> smtp_sockopen_mx ($ address);} else {return $ this-> smtp_sockopen_relay ();}} function smtp_sockopen_relay () {$ this-> log_write ("Trying ". $ this-> smtp_host. ":". $ this-> smtp_port. "\ n"); $ this-> sock = @ fsockopen ($ thi S-> smtp_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-> smtp_host. "\ n"); $ this-> log_write ("Error :". $ errstr. "(". $ errno. ") \ n"); return FALSE;} $ this-> log_write ("Connected to relay host ". $ this-> smtp_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 ($ head Er, $ body) {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 ($ res Ponse. "\ 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 (! @ 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 (preg_match ($ comment, $ address )) {$ address = preg_replace ($ comment, '', $ address);} return $ address;} function get _ Address ($ address) {return trim (preg_replace ("/(. * [<])? ([^ <>] +) [>]? /I "," $2 ", $ address);} function get_mailfrom ($ address, $ mail_from) {return $ mail_from. "<{$ address}>";} function smtp_debug ($ message) {if ($ this-> debug) {return $ message ;}}// class smtp end -----
Example: mail. php
Debug = 1; // send an email $ res = $ smtp-> sendmail ($ mailto, $ mailfrom, $ mailsubject, $ mailbody, $ mailtype); if ($ res) {echo 'sent successfully';} else {echo 'failed to send ';}
Here, I would like to add one point: QQ mail does not allow me to send SMTP to myself, so please pay attention to this issue during testing.
What about code? Baidu Network Disk: http://pan.baidu.com/share/link? Consumer id = 78838 & uk = 453059967
Original article address: simple PHP mail sending class. Thank you for sharing it with the original author.