WeberDev.com PHP and MySQL Code

LOG IN
BEGINNER GUIDES  |  PHP CLASSES  |  CODE SEARCH  |  ARTICLES SEARCH  |  PHP FORUMS  |  PHP MANUAL  |  PHP FUNCTIONS LIST  |  WEB SITE TEMPLATES
Start typing to search for PHP and MySQL Code Snippets and Articles Search
Submit a code Example / Snippet Submit Your Code
Search Engine Optimization Monitor SEO Monitor
Web Site UpTime Monitor UpTime Monitor
WeberDev's Monthly code contest PHP Code Contest
Your Personal Examples List My Favorite Examples
Your Personal Articles List My Favorite Articles
Edit Account Info Update Your Profile
PHP Code Search
Web Development Forums
Learn MySQL Playing Trivia
PHPBB2 Templates
Web Development Index
PHP Web Logs (BLogs)
Web Development Resources
Web Development Content
PHPClasses
PHP Editor
PHP Jobs
Vision.To Design
Ajax Tutorials
PHP Programming Help
PHP/MySQL Programming
Webmaster Resources
Webmaster Forum
XML meta language
website builder
Submit Site
Forex Trading Online forex trading platform

Go Back Add a Comment Send this example to a friend Add this Article to your personal favoritest for easy future access to your favorite Code Examples and Articles. Submit a code example Print this code example.
BACK ADD A COMMENT SEND TO A FRIEND ADD TO MY FAVORITES ADD CODE EXAMPLES PRINT
Title : SMTP Class
Categories : Mail, Classes and Objects Click here to Update Your Picture
leaping langoor
Date : Aug 22nd 2004
Grade : 3 of 5 (graded 5 times)
Viewed : 6412
File : No file for this code example.
Images : No Images for this code example.
Search : More code by leaping langoor
Action : Grade This Code Example
Tools : My Examples List

  Submit your own code examples 
 

OK so this is a simple SMTP class. You can just




SMTP mail class

Author...: leapinglangoor [ leapinglangoor@yahoo.co.in ]
Updated..: 21 Aug 2004
Version..: v 1.2


Function:         server_parse

Description: This will get the response from the mail server

Usage: Only used inside this class. But can be used outside this class aswell
<?php
class smtp {
function
server_parse($socket, $response)
{
   while (
substr($server_response,3,1) != ' ' )
   {
      if( !(
$server_response = @fgets($socket, 256) ) )
      {
         
$this->error("Couldn't get mail server response codes");
      }
   }

   if( !(
substr($server_response, 0, 3) == $response ) )
   {
     
$this->error("Ran into problems sending Mail. Response: $server_response");
   }
}

/***************************************************************** Function: smtpmail
**
** Description: This is a functional replacement for php's builtin mail function, that uses smtp.
**
** Usage: The usage for this function is identical to that of php's built in mail function.
***************************************************************/

function smtpmail($mail_to, $subject, $message, $headers = "")
{

    global
$smtp;

   
//
    // Fix any bare linefeeds in the message to make it RFC821 Compliant.
    //
   
$message = preg_replace("/(?<!\r)\n/si", "\r\n", $message);

    if (
$headers != "")
    {
        if(
is_array($headers))
        {
            if(
sizeof($headers) > 1)
            {
               
$headers = join("\r\n", $headers);
            }
            else
            {
               
$headers = $headers[0];
            }
        }
       
$headers = chop($headers);

       
//
        // Make sure there are no bare linefeeds in the headers
        //
       
$headers = preg_replace("/(?<!\r)\n/si", "\r\n", $headers);
       
//
        // Ok this is rather confusing all things considered,
        // but we have to grab bcc and cc headers and treat them differently
        // Something we really didn't take into consideration originally
        //
       
$header_array = explode("\r\n", $headers);
        @
reset($header_array);
       
$headers = "";
        while( list(,
$header) = each($header_array) )
        {
            if(
preg_match("/^cc:/si", $header) )
            {
               
$cc = preg_replace("/^cc:(.*)/si", "\\1", $header);
            }
            else if(
preg_match("/^bcc:/si", $header ))
            {
               
$bcc = preg_replace("/^bcc:(.*)/si", "\\1", $header);
               
$header = "";
            }
           
$headers .= $header . "\r\n";
        }
       
$headers = chop($headers);
       
$cc = explode(",", $cc);
       
$bcc = explode(",", $bcc);
    }
    if(
$mail_to == "")
    {
       
$this->error("No email address specified");
    }
    if(
trim($subject) == "")
    {
       
$this->error("No email Subject specified");
    }
    if(
trim($message) == "")
    {
       
$this->error("Email message was blank");
    }
    if(
trim($smtp['from']) == ""){
       
$this->error("No FROM address specified");
    }
   
$mail_to_array = explode(",", $mail_to);

   
//
    // Ok we have error checked as much as we can to this point let's get on
    // it already.
    // But first check the mail server.
    //
   
if(trim($smtp['host']) == "")
    {
       
$smtp['host'] = "localhost";
    }

    if( !
$this->socket = @fsockopen($smtp['host'], 25, $errno, $errstr, 20) )
    {
       
$this->error("Could not connect to smtp host : $errno : $errstr");
       
$connection_error = true;
    }

    if( !
$connection_error){

   
$this->server_parse($this->socket, "220");

    if( !empty(
$smtp['username']) && !empty($smtp['password']) )
    {
       
//
        // Send the RFC2554 specified EHLO.
        // works on both SMTP AND ESMTP capable servers
        //
       
fputs($this->socket, "EHLO " . $smtp['host'] . "\r\n");
       
$this->server_parse($this->socket, "250");

       
fputs($this->socket, "AUTH LOGIN\r\n");
       
$this->server_parse($this->socket, "334");
       
fputs($this->socket, base64_encode($smtp['username']) . "\r\n");
       
$this->server_parse($this->socket, "334");
       
fputs($this->socket, base64_encode($smtp['password']) . "\r\n");
       
$this->server_parse($this->socket, "235");
    }
    else
    {
       
// Send the RFC821 specified HELO.
       
fputs($this->socket, "HELO " . $smtp['host'] . "\r\n");
       
$this->server_parse($this->socket, "250");
    }

   
// From this point onward most server response codes should be 250
    // Specify who the mail is from....

   
fputs($this->socket, "MAIL FROM: <" . $smtp['from'] . ">\r\n");
   
$this->server_parse($this->socket, "250");

   
// Specify each user to send to and build to header.
   
$to_header = "To: ";
    @
reset( $mail_to_array );
    while( list( ,
$mail_to_address ) = each( $mail_to_array ))
    {
       
//
        // Add an additional bit of error checking to the To field.
        //
       
$mail_to_address = trim($mail_to_address);
        if (
preg_match('/[^ ]+\@[^ ]+/', $mail_to_address) )
        {
           
fputs( $this->socket, "RCPT TO: $mail_to_address\r\n" );
           
$this->server_parse( $this->socket, "250" );
        }
       
$to_header .= ( ( $mail_to_address != '' ) ? ', ' : '' ) . "$mail_to_address";
    }
   
// Ok now do the CC and BCC fields...
   
@reset( $bcc );
    while( list( ,
$bcc_address ) = each( $bcc ))
    {
       
//
        // Add an additional bit of error checking to bcc header...
        //
       
$bcc_address = trim( $bcc_address );
        if (
preg_match('/[^ ]+\@[^ ]+/', $bcc_address) )
        {
           
fputs( $this->socket, "RCPT TO: $bcc_address\r\n" );
           
$this->server_parse( $this->socket, "250" );
        }
    }
    @
reset( $cc );
    while( list( ,
$cc_address ) = each( $cc ))
    {
       
//
        // Add an additional bit of error checking to cc header
        //
       
$cc_address = trim( $cc_address );
        if (
preg_match('/[^ ]+\@[^ ]+/', $cc_address) )
        {
           
fputs($this->socket, "RCPT TO: $cc_address\r\n");
           
$this->server_parse($this->socket, "250");
        }
    }
   
// Ok now we tell the server we are ready to start sending data
   
fputs($this->socket, "DATA\r\n");

   
// This is the last response code we look for until the end of the message.
   
$this->server_parse($this->socket, "354");

   
// Send the Subject Line...
   
fputs($this->socket, "Subject: $subject\r\n");

   
// Send the Date Line...
   
fputs($this->socket, "Date: ".date('r')."\r\n");

   
// Now the To Header.
   
fputs($this->socket, "$to_header\r\n");

   
// SMTP mail header....
   
fputs($this->socket, "X-Mailer: SMTP Class\r\n");

   
// Now any custom headers....
   
fputs($this->socket, "$headers\r\n\r\n");

   
// Ok now we are ready for the message...
   
fputs($this->socket, "$message\r\n");

   
// Ok the all the ingredients are mixed in let's cook this puppy...
   
fputs($this->socket, ".\r\n");
    if( !
$this->server_parse($this->socket, "250")){
   
fputs($this->socket, "QUIT\r\n");
   
fclose($this->socket);
    return
false;
    }

   
// Now tell the server we are done and close the socket...
   
fputs($this->socket, "QUIT\r\n");
   
fclose($this->socket);

    return
TRUE;
    }else{
    return
FALSE;
    }
// End connection checking
}


/***************************************************************** Function: error
** Description: Print error messages user friendly
** Usage: Only used inside this class.
***************************************************************/

function error($message)
{
    echo
$message."<br /><br />\r\n";
   
$this->mail_error = 'Yes';
}

}
// End class smtp
?>




As always, all my classes conclude with an example. So here it is.

Example.php:
<?php

$mail
= new $smtp;

$to = 'leapinglangoor@yahoo.co.in';
$subject = 'Nice code';
$body = 'Very very good class. You are the best programmer';

$result = $mail -> smtpmail($to, $subject, $body);

if(
$result )
{
     echo(
'All done well and fine' );
}
else
{
     echo(
'<br>Something for sure went wrong' );
}

?>



ECHO-Java Class Credit Card and Check / ACH Transaction Processor
Categories : Java, Cybercash, Classes and Objects, Ecommerce, Java Servlets
Using this script anyone can easily get a form result to his/her mailbox. You can use this script for any form 2 mail purpose.
Categories : PHP, Mail, Form Processing
MySQL Handler
Categories : PHP, Databases, MySQL, Classes and Objects, PHP Classes
Password reminder
Categories : PHP, PHP Classes, Databases, MySQL, Mail
MySQL wrapper class (PHP 5+ only)
Categories : MySQL, Databases, Classes and Objects, Object Oriented
ECHO-PHP Class Real Time Transaction Processor v1.4.4 for Credit Cards and Checks / ACH
Categories : PHP Classes, Cybercash, Classes and Objects, Ecommerce, PHP
Online Automatic Class Generator for MySQL Tables
Categories : PHP, PHP Classes, Classes and Objects, Databases, MySQL
Email Class
Categories : PHP, Mail, PHP Classes
Protect your email links from being spidered by spam email robots!
Categories : PHP, Security, Mail, Email
Class: Info on Users, Servers and the running script
Categories : PHP, Classes and Objects, User Interface, PHP Classes
Tell a friend script :)
Categories : PHP, Mail
Data Retrieve from mailbox and generate the SQL Syntax
Categories : PHP, IMAP, Mail
mail -- send mail
Categories : PHP, PHP Functions, Mail
XPertMailer - Sends TRUE Mails
Categories : PHP, Mail, SMTP, PHP Classes
call_user_method -- Call a user method on an specific object
Categories : PHP, PHP Functions, Classes and Objects