Salve a tutti, sul mio portale sto implementando una funzione mediante la quale gli utenti possono segnalare ai loro contatti msn il proprio codice referente.
In rete ho trovato una classe, che ho leggermente modificato.
Il problema e che tale funzione runna perfettamente da molti server mentre da aruba con hosting linux mi dice " impossibile connettersi al servizio msn"..
Non so dipederaa sicuramente dalla configurazione dei server aruba...
qualcuno puo darmi qualke dritta per risolvere il problema?
Riporto sotto i codici:


Codice PHP:
// PER MSN

function msn_login() {

    
themeheader('Login:');

      
menu_user();



    echo 
"<center>    


            <form method=\"POST\" action=\"account.php\">

                MSN Username:
<input type=\"text\" name=\"username\">


                MSN Password:
<input type=\"password\" name=\"password\">


                 <input type=\"hidden\" value=\"msn_email\" name=\"go\">

                <input type=\"submit\" name=\"invia\" value=\"Invia\"> 


            </form>

    </center>"
;

    

    
themefooter();

}



function 
msn_email() {

global 
$nome_user$id_user$url_sito$admin_email$titolo_sito

    

    if (isset(
$_POST['invia'])) {



        
$username=$_POST['username'];

        
$password=$_POST['password'];



        if (isset(
$username) AND isset($password)) {

        

            if (!
eregi("^[_\.0-9a-z-]+@([0-9a-z][0-9a-z-]+\.)+[a-z]{2,6}$",$username )) {

                 
msg_err(33);

            }

        

            include(
'msn_contact_grab.class.php');

            
$msn2 = new msn;

            
$returned_emails $msn2->qGrab($username$password);



                foreach(
$returned_emails as $row) {



                        
$email_contatto=$row[0];

                        
//$headers = "From: $username \r\n";

                        //$headers.= "Content-Type: text/html; charset=ISO-8859-1 "; 

                        //$headers .= "MIME-Version: 1.0 "; 

                        

                        // manda email

                        
$url=$url_sito."vota.php?ref=$nome_user"// crea url click o refernete

                        

                        
$oggetto="Email inviata da $nome_user";

                        
$messaggio="Ciao, $nome_user ti invita a registrarti su  $url ";

                        

                        
$headers .= "From: $titolo_sito <".$username."> \r\n"

                        
$headers .= "Reply-To: $titolo_sito <".$username."> \r\n"

                        
$headers .= "Return-Path: $titolo_sito <".$username."> \r\n";    

                        
$headers .= "Message-ID: <".$now." [email]TheSystem@hotmail.com[/email]> \r\n"

                        
$headers .= "X-Mailer: PHP v".phpversion() ."\r\n";

                        
$mime_boundary=md5(time()); 

                        
$headers .= 'MIME-Version: 1.0 \r\n'

                        
$headers .= "Content-Type: text/html; boundary=\"".$mime_boundary."\" \r\n"



                

                        
mail($email_contatto$oggetto$messaggio$headers);



                }

                

                if (
$returned_emails) {

                    
themeheader('Login:');

                      
menu_user();

                        echo 
"Login effettuato.";

                    
themefooter();

                } else { 

                    
msg_err(61);

                }

                

        } else {

            
msg_err(60);

        }

        

    } else {

        
msn_login();

    }

}







if (isset(
$_GET['go'])) { 

    
$go $_GET['go']; 

} elseif (isset(
$_POST['go'])) {

    
$go $_POST['go']; 

} else {

    
$go="usermain";

}





switch(
$go) {



    default:

        
login();

    break;

case 
"msn_login":

      
msn_login();

    break;

    

    case 
"msn_email":

      
msn_email();

    break; 







E questa e la classe msn che utilizzo










Codice PHP:

<?php


class msn
{

    var 
$server    =    'messenger.hotmail.com';
    var 
$port    =    1863;

    var 
$nexus    =    'https://nexus.passport.com/rdr/pprdr.asp';
    var 
$ssh_login    =    'login.live.com/login2.srf';

    var 
$debug    =    0;

    var 
$curl_bin    =    0;
    var 
$curl    =    '/usr/local/bin/curl';    // linux
    //var $curl    =    'c:\curl.exe';        // windows

    //Used to prevent the script from hanging
    
var $count 0;
    
    
//Used to store the email addresses until all have been collected
    
var $email_input = array();
    var 
$email_processing = array();
    var 
$email_output = array();

    
    function 
connect($passport$password)
    {
        
$this->trID 1;

    if (!
$this->fp = @fsockopen($this->server$this->port$errno$errstr2)) {
            
            die(
"Could not connect to messenger service");
        
        } else {
              
stream_set_timeout($this->fp2);
              
            
$this->_put("VER $this->trID MSNP9 CVR0\r\n");

            while (! 
feof($this->fp))
            {
                
$data $this->_get();

                switch (
$code substr($data03))
                {
                    default:
                        echo 
$this->_get_error($code);

                        return 
false;
                    break;
                    case 
'VER':
                        
$this->_put("CVR $this->trID 0x0409 win 4.10 i386 MSNMSGR 7.0.0816 MSMSGS $passport\r\n");
                    break;
                    case 
'CVR':
                        
$this->_put("USR $this->trID TWN I $passport\r\n");
                    break;
                    case 
'XFR':
                        list(, , , 
$ip)  = explode (' '$data);
                        list(
$ip$port) = explode (':'$ip);

                        if (
$this->fp = @fsockopen($ip$port$errno$errstr2))
                        {
                            
$this->trID 1;

                            
$this->_put("VER $this->trID MSNP9 CVR0\r\n");
                        }
                        else
                        {
                            if (! empty(
$this->debug)) echo 'Unable to connect to msn server (transfer)';

                            return 
false;
                        }
                    break;
                    case 
'USR':
                        if (isset(
$this->authed))
                        {
                            return 
true;
                        }
                        else
                        {
                            
$this->passport $passport;
                            
$this->password urlencode($password);

                            list(,,,, 
$code) = explode(' 'trim($data));

                            if (
$auth $this->_ssl_auth($code))
                            {
                                
$this->_put("USR $this->trID TWN S $auth\r\n");

                                
$this->authed 1;
                            }
                            else
                            {
                                if (! empty(
$this->debug)) echo 'auth failed';

                                return 
false;
                            }
                        }
                    break;
                }
            }
        }
        
    }

    
//Collects the raw data containing the email addresses
    
function rx_data()
    {
        
$this->_put("SYN $this->trID 0\r\n");
        
        
//Supplies the second MSG code which stops
        //the script from hanging as it waits for
        //more content
        
$this->_put("CHG $this->trID NLN\r\n");
        
        
$stream_info stream_get_meta_data($this->fp);
        
$email_total 100;
        
//the count check prevents the script hanging as it waits for more content
        
while ((! feof($this->fp)) && (! $stream_info['timed_out']) && ($this->count <= 1) && (count($this->email_input) < $email_total))
        {
            
$data $this->_get();
            
$stream_info stream_get_meta_data($this->fp);
            
            if (
$data)
            {
                
                switch(
$code substr($data03))
                {
                    default:
                        
// uncommenting this line here would probably give a load of "error code not found" messages.
                        //echo $this->_get_error($code);
                    
break;
                    case 
'MSG':
                       
//This prevents the script hanging as it waits for more content
                       
$this->count++;
                    break;
                    case 
'LST':
                       
//These are the email addresses
                       //They need to be collected in email_input
                       
                       
$this->email_input[] = $data;
                       if (
$this->debug) print("<span class='b'>" count($this->email_input) . "</span>");
                       
                    break;
                    case 
'SYN':
                    
$syn_explode explode(" "$data);
                    
$email_total $syn_explode[3];
                    break;
                    case 
'CHL':
                        
$bits explode (' 'trim($data));

                        
$return md5($bits[2].'Q1P7W2E4J9R8U3S5');
                        
$this->_put("QRY $this->trID [email]msmsgs@msnmsgr.com[/email] 32\r\n$return");
                    break;
                    
                }
            }
        }
        
    }
    
    
//This function extracts the emails and screen names from the raw data 
    //collected by rx_data
    
function process_emails () {
      
      
//Neaten up the emails
      
      //$regex = "|^LST\s(\S+?)\s(\S+?)\s\d+?\s\d+?$|";
      
foreach($this->email_input as $email_entry) {
        
        
//Seperate out the email from the name and other data
        
$this->email_processing[] = explode(" "$email_entry);
                        
      }
      
      
//Get rid of the unnecessary data and clean up the name
      
foreach($this->email_processing as $email_entry){
        
        
$this->email_output[] = array(=> $email_entry['1'],
                                        
=> urldecode($email_entry[2]));
    }
    
    
//var_dump($this->email_processing);
    //var_dump($this->email_output);
      
      
      
  
}

    
//This is a quick way of calling all the seperate functions
    //needed to grab the contact list
    
function qGrab ($username$password) {
      
      
//Connect to the MSNM service
      
$this->connect($username$password);
      
      
//Get data
      
$this->rx_data();
      
      
//Process emails
      
$this->process_emails();
      
      
//send the email array
      
return $this->email_output;
      
      
    }


    
/*====================================*\
        Various private functions
    \*====================================*/

    
function _ssl_auth($auth_string)
    {
        if (empty(
$this->ssh_login))
        {
            if (
$this->curl_bin)
            {
                
exec("$this->curl -m 60 -LkI $this->nexus"$header);
                
$header implode($headernull);
            }
            else
            {
                
$ch curl_init($this->nexus);

                
curl_setopt($chCURLOPT_HEADER1);
                
curl_setopt($chCURLOPT_NOBODY1);
                
curl_setopt($chCURLOPT_FOLLOWLOCATION1);
                
curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
                
curl_setopt($chCURLOPT_RETURNTRANSFER1);
                
// curl_setopt($ch, CURLOPT_TIMEOUT, 2);

                
$header curl_exec($ch);

                
curl_close($ch);
            }

            
preg_match ('/DALogin=(.*?),/'$header$out);

            if (isset(
$out[1]))
            {
                
$slogin $out[1];
            }
            else
            {
                return 
false;
            }
        }
        else
        {
            
$slogin $this->ssh_login;
        }


        if (
$this->curl_bin)
        {
            
$header1 '"Authorization: Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in='.$this->passport.',pwd='.$this->password.','.$auth_string.'"';

            
exec("$this->curl -m 60 -LkI -H $header1 https://$slogin"$auth_string);

            
$header null;

            foreach (
$auth_string as $key => $value)
            {
                if (
strstr($value'Unauthorized'))
                {
                    echo 
'Unauthorised';
                    return 
false;
                }
                elseif (
strstr($value'Authentication-Info'))
                {
                    
$header $value;
                }
            }
        }
        else
        {
            
$ch curl_init('https://'.$slogin);
            
curl_setopt($chCURLOPT_HTTPHEADER, array(
                            
'Authorization: Passport1.4 OrgVerb=GET,OrgURL=http%3A%2F%2Fmessenger%2Emsn%2Ecom,sign-in='.$this->passport.',pwd='.$this->password.','.$auth_string,
                            
'Host: login.passport.com'
                            
));

            
curl_setopt($chCURLOPT_HEADER1);
            
curl_setopt($chCURLOPT_NOBODY1);
            
//curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
            
curl_setopt($chCURLOPT_SSL_VERIFYPEER0);
            
curl_setopt($chCURLOPT_RETURNTRANSFER1);
            
// curl_setopt($ch, CURLOPT_TIMEOUT, 2);

            
$header curl_exec($ch);

            
curl_close($ch);
        }

        
preg_match ("/from-PP='(.*?)'/"$header$out);

        return (isset(
$out[1])) ? $out[1] : false;
    }


    function 
_get()
    {
        if (
$data = @fgets($this->fp4096))
        {
              
          
            if (
$this->debug) echo "<div class=\"r\">&lt;&lt;&lt; $data</div>\n";

            return 
$data;
        }
        else
        {
            return 
false;
        }
    }


    function 
_put($data)
    {
        
fwrite($this->fp$data);

        
$this->trID++;

        if (
$this->debug) echo "<div class=\"g\">&gt;&gt;&gt; $data</div>";
    }


    function 
_get_error($code)
    {
        switch (
$code)
        {
            case 
201:
                return 
'Error: 201 Invalid parameter';
            break;
            case 
217:
                return 
'Error: 217 Principal not on-line';
            break;
            case 
500:
                return 
'Error: 500 Internal server error';
            break;
            case 
540:
                return 
'Error: 540 Challenge response failed';
            break;
            case 
601:
                return 
'Error: 601 Server is unavailable';
            break;
            case 
710:
                return 
'Error: 710 Bad CVR parameters sent';
            break;
            case 
713:
                return 
'Error: 713 Calling too rapidly';
            break;
            case 
731:
                return 
'Error: 731 Not expected';
            break;
            case 
800:
                return 
'Error: 800 Changing too rapidly';
            break;
            case 
910:
            case 
921:
                return 
'Error: 910/921 Server too busy';
            break;
            case 
911:
                return 
'Error: 911 Authentication failed';
            break;
            case 
923:
                return 
'Error: 923 Kids Passport without parental consent';
            break;
            case 
928:
                return 
'Error: 928 Bad ticket';
            break;
            default:
                return 
'Error code '.$code.' not found';
            break;
        }
    }
    

}


?>
l'errore credo stia qua

if (!$this->fp = @fsockopen($this->server, $this->port, $errno, $errstr, 2)) {

die("Could not connect to messenger service");

Grazie mille