Este trabajo es para una exposicion de paginas web de la universidad, ne esta quedando bien pero tengo este inconveniente, tengo los siguientes condigos para que cuando coloquen el correo y la contraseña el usuario o visitante, invite a sus contactos a la pagina que estoy haciendo.
Archivo llamado: index.php
Código PHP:
  
 <?php
// ESTE ARCHIVO ES PARA LOS EMAIL MASIVOS.. (INVITACIONES DE HOTMAIL WEB MASTER DAVID TORRES-.)
error_reporting(E_ALL);
 
//-header('Content-Type: text/html; charset=UTF-8');
 
require('includes/phpListGrab.class.php');
 
//-readfile('templates/header.html');
 
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
    $phplistgrab = new phpListGrab($_POST['passport'], $_POST['password']);
    $ret = $phplistgrab->grab();
 
    if (!$ret)
    {
        switch ($phplistgrab->result)
        {
            case ERR_AUTHENTICATION_FAILED:
                echo '<p>Authentication failed.</p>';
                break;
 
            case ERR_SERVER_UNAVAILABLE:
                echo '<p>Failed to connect to server.</p>';
                break;
        }
 
        //-readfile('templates/footer.html');
        exit();
    }
 
    $indent = str_repeat("\t", 3);    // Esto es sólo para hacer el formato HTML, bastante, el nivel de estos elementos es de 3 pestañas en.
 
    //-echo "$indent<h3>Contacts</h3>\n\n$indent<ul>\n";
 
    foreach ($phplistgrab->lists[LIST_FORWARD] as $contact)
    {
        $destinatario = $contact['passport'];
 
        
$QuienManda = $_POST['passport'];
$cuerpo = '<p align="center"><a href="http://WWW.TUPAGINA.COM/"><img src="../images/promocion/promo.jpg" border="0"></a></p>';
$retp = "[email protected]";
 
$asunto = "visita a WWW.TUPAGINA.COM";
$headers = "MIME-Version: 1.0\r\n";
$headers .= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "From: Maracuchos <$QuienManda>\r\n";
$headers .= "Reply-To: $QuienManda\r\n";
$headers .= "Return-path: $retp\r\n";
        
        mail($destinatario,$asunto,$cuerpo,$headers);
        
    }
 
    //-echo "$indent</ul>\n";
}
/*-else
{
    readfile('templates/form.html');
}
 
readfile('templates/footer.html');
-*/
?>    Código PHP:
   <?php
    
$QuienManda = $_POST['passport'];
echo $QuienManda;
?>    Archivo llamado: phpListGrab.class
Código PHP:
   <?php
 
require('MSNPAuth.class.php');
 
define('ERR_AUTHENTICATION_FAILED', 911);
define('ERR_SERVER_UNAVAILABLE', 600);
define('OK', 0);
 
define('LIST_ALLOW',    'AL');
define('LIST_BLOCK',    'BL');
define('LIST_FORWARD',    'FL');
define('LIST_REVERSE',    'RL');
 
class phpListGrab
{
    var $_passport    = '';
    var $_password    = '';
    var $result    = 0;
    var $lists    = array(
                LIST_ALLOW    => array(),
                LIST_BLOCK    => array(),
                LIST_FORWARD    => array(),
                LIST_REVERSE    => array(),
            );
    var $_contacts    = array();
    var $_socket    = NULL;
    var $_lst_count    = 0;
 
    function phpListGrab($passport, $password)
    {
        $this->_passport = $passport;
        $this->_password = $password;
    }
 
    function grab($server = 'messenger.hotmail.com')
    {
        $this->_socket = @fsockopen($server, 1863);
 
        if (!$this->_socket)
        {
            $this->result = ERR_SERVER_UNAVAILABLE;
            return false;
        }
 
        $this->_send('VER 0 MSNP8');
 
        while (!feof($this->_socket))
        {
            $data = fgets($this->_socket);
            $data = substr($data, 0, -2);
            $ret = $this->_parse($data);
 
            if (!$ret)
            {
                return $ret;
            }
        }
 
        // Sort the lists into alphabetical order
        usort($this->lists[LIST_REVERSE], array($this, '_cmp'));
        usort($this->lists[LIST_FORWARD], array($this, '_cmp'));
        usort($this->lists[LIST_ALLOW], array($this, '_cmp'));
        usort($this->lists[LIST_BLOCK], array($this, '_cmp'));
 
        return true;
    }
 
    function _send($data)
    {
        fputs($this->_socket, "$data\r\n");
    }
 
    function _parse($data)
    {
        $params = explode(' ', $data);
 
        switch ($params[0])
        {
            case 'VER':
                $this->_send('CVR 1 0x0409 winnt 5.1 i386 MSNMSGR 6.0.0254 MSMSGS '.$this->_passport);
                break;
 
            case 'CVR':
                $this->_send('USR 2 TWN I '.$this->_passport);
                break;
 
            case 'XFR':
                $subparams = explode(':', $params[3]);
                return $this->grab($subparams[0]);
                break;
 
            case 'USR':
                if ($params[2] == 'TWN')
                {
                    $msnpauth = new MSNPAuth($this->_passport, $this->_password, $params[4]);
                    $hash = $msnpauth->getKey();
 
                    if (!$hash)
                    {
                        $this->result = ERR_AUTHENTICATION_FAILED;
                        $this->_send('OUT');
                        return false;
                    }
 
                    $this->_send('USR 3 TWN S '.$hash);
 
                }
                elseif ($params[2] == 'OK')
                {
                    $this->_send('SYN 4 0');
                }
                break;
 
            case 'SYN':
                $this->_lst_count = $params[3];
                break;
 
            case 'LST':
                $this->_lst_count--;
 
                if (!isset($this->_contacts[$params[1]]))
                {
                    $this->_contacts[$params[1]] = array(
                                        'passport'    => $params[1], 
                                        'friendlyname'    => urldecode(utf8_decode($params[2])), 
                                        'lists'        => $params[3],
                                        'status'    => 'FLN',
                                        'clientid'    => 0,
 
 
                                    );
                }
 
                if (($params[3] & 2) > 0)
                {
                    $this->lists[LIST_ALLOW][$params[1]] = &$this->_contacts[$params[1]];
                }
 
                if (($params[3] & 1) > 0)
                {
                    $this->lists[LIST_FORWARD][$params[1]] = &$this->_contacts[$params[1]];
                }
 
                if (($params[3] & 4) > 0)
                {
                    $this->lists[LIST_BLOCK][$params[1]] = &$this->_contacts[$params[1]];
                }
 
                if (($params[3] & 8) > 0)
                {
                    $this->lists[LIST_REVERSE][$params[1]] = &$this->_contacts[$params[1]];
                }
 
                if ($this->_lst_count == 0)
                {
                    $this->_send('OUT');
                    $this->result = OK;
                }
 
                break;
        }
 
        return true;
    }
 
    function _cmp($a, $b)
    {
        return strcasecmp($a['friendlyname'], $b['friendlyname']);
    }
}
 
?>     
 

