Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo


gmail not working

  • jeffbro

    I have installed and tested succesfuly with yahoo email but gmail isn't working. Is anyone else having this problem?



    • Zeno Yu
      Zeno Yu

      #Copyright 2006 Svetlozar Petrov
      #All Rights Reserved

      #Script to import the names and emails from gmail contact list

      class GMailer extends baseFunction
          var $location = "";
          var $cookiearr = array();

          #Globals Section, $location and $cookiearr should be used in any script that uses
          #getAddressbook function
          #function getAddressbook, accepts as arguments $login (the username) and $password
          #returns array of: array of the names and array of the emails if login successful
          #otherwise returns 1 if login is invalid and 2 if username or password was not specified
          function getAddressbook($login, $password)

               #the globals will be updated/used in the read_header function
               global $location;
               global $cookiearr;
               global $ch;
              #check if username and password was given:
              if ((isset($login) && trim($login)=="") || (isset($password) && trim($password)==""))
                #return error code if they weren't
                  return 2;
              #initialize the curl session
              $ch = curl_init();
              curl_setopt($ch, CURLOPT_URL,"http://mail.google.com/mail/");
              curl_setopt($ch, CURLOPT_REFERER, "");
              curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
              curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
              curl_setopt($ch, CURLOPT_HEADERFUNCTION, 'read_header');
              #get the html from gmail.com
            $html = curl_exec($ch);
              $matches = array();
              $actionarr = array();
              $action = "https://www.google.com/accounts/ServiceLoginAuth?service=mail";
              #parse the login form:
              #parse all the hidden elements of the form
              preg_match_all('/<input type\="hidden" name\="([^"]+)".*?value\="([^"]*)"[^>]*>/si', $html, $matches);
              $values = $matches[2];
              $params = "";
              foreach ($matches[1] as $name)
                $params .= "$name=" . urlencode($values[$i]) . "&";
            $login = urlencode($login);
            $password = urlencode($password);
            #submit the login form:
              curl_setopt($ch, CURLOPT_URL,$action);
              curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
              curl_setopt($ch, CURLOPT_POST, 1);
              curl_setopt($ch, CURLOPT_POSTFIELDS, $params ."Email=$login&Passwd=$password&PersistentCookie=");
              $html = curl_exec($ch);
            #test if login was successful:
            if (!isset($cookiearr['GX']) && (!isset($cookiearr['LSID']) || $cookiearr['LSID'] == "EXPIRED"))
                  return 1;
            #this is the new csv url:
              curl_setopt($ch, CURLOPT_URL, "http://mail.google.com/mail/contacts/data/export?exportType=ALL&groupToExport=&out=OUTLOOK_CSV");
            curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
              $html = curl_exec($ch);
            $csvrows = explode("\n", $html);
            $result = array();
            $result['name'] = array();
            $result['email'] = array();
            foreach ($csvrows as $row)
              $values = explode(",", $row);
              if (eregi("@", $values[1]))
                $result['name'][] = ( trim($values[0])=="" ) ? $values[1] : $values [0];
                $result['email'][] = $values[1];

             return $result;


      #read_header is essential as it processes all cookies and keeps track of the current location url
      #leave unchanged, include it with get_contacts
      function read_header($ch, $string)
          global $location;
          global $cookiearr;
          global $ch;
          $length = strlen($string);
          if(!strncmp($string, "Location:", 9))
            $location = trim(substr($string, 9, -1));
          if(!strncmp($string, "Set-Cookie:", 11))
            $cookiestr = trim(substr($string, 11, -1));
            $cookie = explode(';', $cookiestr);
            $cookie = explode('=', $cookie[0]);
            $cookiename = trim(array_shift($cookie));
            $cookiearr[$cookiename] = trim(implode('=', $cookie));
          $cookie = "";
          if(trim($string) == "")
            foreach ($cookiearr as $key=>$value)
              $cookie .= "$key=$value; ";
            curl_setopt($ch, CURLOPT_COOKIE, $cookie);

          return $length;

      #function to trim the whitespace around names and email addresses
      #used by get_contacts when parsing the csv file
      function trimvals($val)
        return trim ($val, "\&quot; \n");


    • Johnnie Fox
      Johnnie Fox

      This script works fine !
      thanks Zeno Yu

    • pokbluesky

      For me, the only thing is working is MSN.. How can I make yahoo and gmail working .. NEED HELP !!!