Revision: 384
Initial Code
Initial URL
Initial Description
Initial Title
Initial Tags
Initial Language
at July 12, 2006 11:19 by cochambre
Initial Code
// modified to provide authenticated logins function mymail($to,$subject,$message,$headers) { // set as global variable global $GLOBAL; // get From address if ( preg_match("/From:.*?[A-Za-z0-9\._%-]+\@[A-Za-z0-9\._%-]+.*/", $headers, $froms) ) { preg_match("/[A-Za-z0-9\._%-]+\@[A-Za-z0-9\._%-]+/", $froms[0], $fromarr); $from = $fromarr[0]; } // Open an SMTP connection $cp = fsockopen ($GLOBAL["SMTP_SERVER"], $GLOBAL["SMTP_PORT"], &$errno, &$errstr, 1); if (!$cp) return "Failed to even make a connection"; $res=fgets($cp,256); if(substr($res,0,3) != "220") return "Failed to connect"; // Say hello... fputs($cp, "HELO ".$GLOBAL["SMTP_SERVER"]."\r\n"); $res=fgets($cp,256); if(substr($res,0,3) != "250") return "Failed to Introduce"; // perform authentication fputs($cp, "auth login\r\n"); $res=fgets($cp,256); if(substr($res,0,3) != "334") return "Failed to Initiate Authentication"; fputs($cp, base64_encode($GLOBAL["SMTP_USERNAME"])."\r\n"); $res=fgets($cp,256); if(substr($res,0,3) != "334") return "Failed to Provide Username for Authentication"; fputs($cp, base64_encode($GLOBAL["SMTP_PASSWORD"])."\r\n"); $res=fgets($cp,256); if(substr($res,0,3) != "235") return "Failed to Authenticate"; // Mail from... fputs($cp, "MAIL FROM: <$from>\r\n"); $res=fgets($cp,256); if(substr($res,0,3) != "250") return "MAIL FROM failed"; // Rcpt to... fputs($cp, "RCPT TO: <$to>\r\n"); $res=fgets($cp,256); if(substr($res,0,3) != "250") return "RCPT TO failed"; // Data... fputs($cp, "DATA\r\n"); $res=fgets($cp,256); if(substr($res,0,3) != "354") return "DATA failed"; // Send To:, From:, Subject:, other headers, blank line, message, and finish // with a period on its own line (for end of message) fputs($cp, "To: $to\r\nFrom: $from\r\nSubject: $subject\r\n$headers\r\n\r\n$message\r\n.\r\n"); $res=fgets($cp,256); if(substr($res,0,3) != "250") return "Message Body Failed"; // ...And time to quit... fputs($cp,"QUIT\r\n"); $res=fgets($cp,256); if(substr($res,0,3) != "221") return "QUIT failed"; return true; }
Initial URL
Initial Description
Initial Title
PHP mail sender without native mail()
Initial Tags
Initial Language
PHP