<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Abhi&#039;s Weblog &#187; Gmail</title>
	<atom:link href="http://abhinavsingh.com/blog/tag/gmail/feed/" rel="self" type="application/rss+xml" />
	<link>http://abhinavsingh.com/blog</link>
	<description>PHP, Memcached, XMPP and Web Development</description>
	<lastBuildDate>Wed, 06 Apr 2011 22:19:11 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>How to broadcast a message to your Gtalk friends using JAXL?</title>
		<link>http://abhinavsingh.com/blog/2009/05/how-to-broadcast-a-message-to-your-gtalk-friends-using-jaxl/</link>
		<comments>http://abhinavsingh.com/blog/2009/05/how-to-broadcast-a-message-to-your-gtalk-friends-using-jaxl/#comments</comments>
		<pubDate>Wed, 20 May 2009 12:31:44 +0000</pubDate>
		<dc:creator>Abhinav Singh</dc:creator>
				<category><![CDATA[XMPP]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Gtalk]]></category>
		<category><![CDATA[Gtalkbots]]></category>
		<category><![CDATA[JAXL]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://abhinavsingh.com/blog/?p=395</guid>
		<description><![CDATA[In this era of social media we all look forward to easy and utility tools to easily market our site and blogs. In this post I will demonstrate a ready to use script, which will help you broadcast your message to everyone on your gtalk friend list in one go. jaxl4broadcast.class.php jaxl4broadcast.class.php is an extension [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fabhinavsingh.com%2Fblog%2F2009%2F05%2Fhow-to-broadcast-a-message-to-your-gtalk-friends-using-jaxl%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fabhinavsingh.com%2Fblog%2F2009%2F05%2Fhow-to-broadcast-a-message-to-your-gtalk-friends-using-jaxl%2F&amp;source=imoracle&amp;style=normal&amp;service=bit.ly&amp;service_api=R_f027b5a79a20a49b713f16282f1e0857&amp;hashtags=Gmail,Gtalk,Gtalkbots,JAXL,Open+Source&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>In this era of social media we all look forward to easy and utility tools to easily market our site and blogs. In this post I will demonstrate a ready to use script, which will help you broadcast your message to everyone on your gtalk friend list in one go.</p>
<p><strong style="font-size:16px;"><u>jaxl4broadcast.class.php</u></strong><br />
jaxl4broadcast.class.php is an extension of <a href="http://abhinavsingh.com/blog/2009/01/introducing-jaxl-open-source-jabber-xmpp-library/ target="_blank"">JAXL library</a>. This extension simply saves all your buddy list in an array while connecting with Gtalk servers, and then send out your custom message to all of them in one go. The code that will do the task:</p>
<pre class="php" name="code">
    function setStatus() {
      $this->sendStatus($this->status);
      print "Setting Status...\n";
      print "Done\n";

      foreach($this->rosterList as $buddy) {
        print "Sending message to ".$buddy."\n";
        $this->sendMessage($buddy,"Message broadcasted using *JAXL Library http://code.google.com/p/jaxl*");
        sleep(1);
      }

      /* Now loggout of the system */
      exit;
    }</pre>
<p><strong style="color:#FF0000">PS: You need to checkout the latest version of xmpp.class.php for jaxl4broadcast.class.php to work. jaxl-1.0.4 doesn&#8217;t include the latest checked in xmpp.class.php</strong></p>
<p><strong style="font-size:16px;"><u>Using jaxl4broadcast.class.php</u></strong></p>
<ul>
<li>Checkout the latest version of JAXL library from <a href="http://code.google.com/p/jaxl/source/checkout">here</a></li>
<li>Open <em>config.ini.php</em>, replace <strong>myproductionuser</strong> => <strong>gmail id</strong> and <strong>password</strong> => <strong>gmail password</strong></li>
<li>Open <em>index.php</em>, replace <strong>jaxl.class.php</strong> => <strong>jaxl4broadcast.class.php</strong></li>
<li>Open command line window (for windows) and shell prompt (for *nix). Navigate to the checked out directory</li>
<li>From command prompt run <strong>php index.php</strong></li>
<li>If everything goes alright, you will see something like the image below</li>
<li>See list of <a href="http://code.google.com/p/jaxl/">known issues</a> if you are new to JAXL and having trouble</li>
</ul>
<p><img src="http://abhinavsingh.com/blog/wp-content/uploads/2009/05/jaxl4broadcast.gif" alt="jaxl4broadcast" title="jaxl4broadcast" width="665" height="335" class="alignleft size-full wp-image-404" /></p>
<p>Other JAXL Extensions you may want to checkout:</p>
<ul>
<li>dzone@gtalkbots.com (<a href="http://code.google.com/p/jaxl/source/browse/trunk/jaxl4gmail.class.php">Source Code</a>)</li>
<li>Sending custom out-of-office mails in Gmail (<a href="http://code.google.com/p/jaxl/source/browse/trunk/jaxl4dzone.class.php">Source Code</a>)</li>
</ul>
<p>Happy Broadcasting!</p>
<script type="text/javascript">var wordpress_toolbar_urls = ["http:\/\/api.tweetmeme.com\/share?url=http%3A%2F%2Fabhinavsingh.com%2Fblog%2F2009%2F05%2Fhow-to-broadcast-a-message-to-your-gtalk-friends-using-jaxl%2F","http:\/\/code.google.com\/p\/jaxl\/source\/checkout","http:\/\/code.google.com\/p\/jaxl\/","http:\/\/code.google.com\/p\/jaxl\/source\/browse\/trunk\/jaxl4gmail.class.php","http:\/\/code.google.com\/p\/jaxl\/source\/browse\/trunk\/jaxl4dzone.class.php"];var wordpress_toolbar_url = "http://abhinavsingh.com/blog/wp-content/plugins/wordpress-toolbar/toolbar.php";var wordpress_toolbar_oinw = "oinw";var wordpress_toolbar_hash = "aHR0cDovL2FiaGluYXZzaW5naC5jb20vYmxvZy8yMDA5LzA1L2hvdy10by1icm9hZGNhc3QtYS1tZXNzYWdlLXRvLXlvdXItZ3RhbGstZnJpZW5kcy11c2luZy1qYXhsLzx3cHRiPkhvdyB0byBicm9hZGNhc3QgYSBtZXNzYWdlIHRvIHlvdXIgR3RhbGsgZnJpZW5kcyB1c2luZyBKQVhMPzx3cHRiPmh0dHA6Ly9hYmhpbmF2c2luZ2guY29tL2Jsb2c8d3B0Yj5BYmhpJiMwMzk7cyBXZWJsb2c%3D";</script><ul class="related_post"><li><a href="http://abhinavsingh.com/blog/2009/02/programatically-control-your-google-mails-using-jaxl-v-104/" title="Programatically control your google mails using JAXL v 1.0.4">Programatically control your google mails using JAXL v 1.0.4</a> (4)</li><li><a href="http://abhinavsingh.com/blog/2009/01/how-to-get-dzone-feeds-as-im-using-jaxl-add-dzonegtalkbotscom/" title="How to get dzone feeds as IM using JAXL? Add dzone@gtalkbots.com">How to get dzone feeds as IM using JAXL? Add dzone@gtalkbots.com</a> (8)</li><li><a href="http://abhinavsingh.com/blog/2009/01/introducing-jaxl-open-source-jabber-xmpp-library/" title="Introducing JAXL &#8211; Open Source Jabber XMPP Library">Introducing JAXL &#8211; Open Source Jabber XMPP Library</a> (92)</li><li><a href="http://abhinavsingh.com/blog/2010/08/releasing-jaxl-2-0-object-oriented-xmpp-framework-in-php/" title="Releasing Jaxl 2.0 &#8211; Object oriented XMPP framework in PHP">Releasing Jaxl 2.0 &#8211; Object oriented XMPP framework in PHP</a> (6)</li><li><a href="http://abhinavsingh.com/blog/2010/01/get-lyrics-for-any-song-using-xmpp-and-php-right-into-your-im-add-lyricsflygtalkbots-com/" title="Get lyrics for any song using XMPP and PHP right into your IM &#8211; Add lyricsfly@gtalkbots.com">Get lyrics for any song using XMPP and PHP right into your IM &#8211; Add lyricsfly@gtalkbots.com</a> (17)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://abhinavsingh.com/blog/2009/05/how-to-broadcast-a-message-to-your-gtalk-friends-using-jaxl/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Programatically control your google mails using JAXL v 1.0.4</title>
		<link>http://abhinavsingh.com/blog/2009/02/programatically-control-your-google-mails-using-jaxl-v-104/</link>
		<comments>http://abhinavsingh.com/blog/2009/02/programatically-control-your-google-mails-using-jaxl-v-104/#comments</comments>
		<pubDate>Fri, 06 Feb 2009 18:10:30 +0000</pubDate>
		<dc:creator>Abhinav Singh</dc:creator>
				<category><![CDATA[XMPP]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Gtalk]]></category>
		<category><![CDATA[JAXL]]></category>
		<category><![CDATA[Open Source]]></category>

		<guid isPermaLink="false">http://abhinavsingh.com/blog/?p=247</guid>
		<description><![CDATA[Google has released an API for almost all of their products including maps, feedburner and gadgets. However one of the API&#8217;s which every developer would have loved to make use of is &#8220;Google Mail API&#8221; which is still missing (available for premium google apps user only). Here in this post I would demonstrate how one [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fabhinavsingh.com%2Fblog%2F2009%2F02%2Fprogramatically-control-your-google-mails-using-jaxl-v-104%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fabhinavsingh.com%2Fblog%2F2009%2F02%2Fprogramatically-control-your-google-mails-using-jaxl-v-104%2F&amp;source=imoracle&amp;style=normal&amp;service=bit.ly&amp;service_api=R_f027b5a79a20a49b713f16282f1e0857&amp;hashtags=API,Gmail,Gtalk,JAXL,Open+Source,XMPP&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Google has released an API for almost all of their products including maps, feedburner and gadgets. However one of the API&#8217;s which every developer would have loved to make use of is &#8220;Google Mail API&#8221; which is still missing (available for premium google apps user only). Here in this post I would demonstrate how one can programatically control his/her google mails using JAXL without being a premium user of google mail account.</p>
<p>For those who have landed on this post straight and have little knowledge about what JAXL is &#8220;<em>JAXL stands for Jabber XMPP Library and for fun you may call it Just Another XMPP Library. It is written in PHP and can be downloaded from <a href="http://code.google.com/p/jaxl">http://code.google.com/p/jaxl</a></em>&#8220;. To know more about JAXL, read the <a href="http://abhinavsingh.com/blog/2009/01/introducing-jaxl-open-source-jabber-xmpp-library/">introductory post</a> here. If you want to dig deep and know how JAXL works, read the <a href="http://abhinavsingh.com/blog/2009/01/behind-the-scenes-how-and-what-xmls-are-exchanged-by-jaxl/">gtalk case study</a> here. Finally, after reading this post you may also want to check how you can <a href="http://abhinavsingh.com/blog/2009/01/how-to-get-dzone-feeds-as-im-using-jaxl-add-dzonegtalkbotscom/">fetch any social networking feed</a> right into your gtalk messenger using JAXL.</p>
<p>Version 1.0.4 of JAXL included support for &#8220;<a href="http://code.google.com/apis/talk/jep_extensions/gmail.html">Gmail Notification Extension of XMPP</a>&#8220;. If you are a daily Gtalk user like me, then you have surely seen this extension in action. Just recall Gtalk notifying you of a new mail in your inbox, through a pop-up in the bottom right corner. Also those who see this in action everyday will agree with me that this notification comes even before the mail has actually appeared in you inbox. Simply because of the <a href="http://en.wikipedia.org/wiki/Push_technology">PUSH technology</a> used by XMPP protocol.</p>
<p>So why would you in first place be interested in accessing your google mails programatically. A quick thought on this brings me to the following real life scenarios:</p>
<ul>
<li>Suppose your are out of vacation and you want to set a custom auto-reply message for your family and friends, while you want to set a general out-of-office message for your colleagues. The limitation in gmail is that you can&#8217;t really do this. Further in this post, I will show you how can you achieve this using JAXL.</li>
<li>Suppose you are a google app user and your company has organized an online programming contest. Further you want to mail each question to the contestants only if they has answered the previous question. JAXL provide you a way to access key information about your incoming mails like: sender email id, subject, number of threads in the mail, time at which  mail was sent, mail url and mail snippet. Which is enough for you to code a bot which can check for incoming mail and then send in next question to the contestant who sent this mail</li>
<ol>
Further there can be a thousand use cases where you would you like to have such a control over you google mails but before discussing them, lets see a demonstration on how can we use JAXL to achieve this.</p>
<p><strong style="font-size:18px;"><u>Sending Custom Auto-Reply Mails using JAXL</u></strong><br />
Along with extendable functions like <strong>eventMessage()</strong> and <strong>eventPresence()</strong>, JAXL&#8217;s latest version now also provide another extendable function called <strong>eventNewEMail()</strong>. So everytime you receive a new mail(s) in your google account, the control is passed to this function along with all informations about the incoming mails.</p>
<p>Various data passed to this function are:</p>
<ul>
<li>$total: Tells you about total number of unread mails.</li>
<li>$thread: The thread id of all the unread threads. Note: In Gmail you have threads in your inbox which can contain more than a single mail.</li>
<li>$url: The mail.google.com url for the new mail</li>
<li>$participation: This can be 0, 1 or 2. 0 indicates that you have not participated, 1 indicates that you are one of the many recipients and 2 indicates that you are the sole recipient for messages in this thread</li>
<li>$message: The number of messages in the thread. For instance you can have more than one unread mail in a thread.</li>
<li>$date: A timestamp of the most recent unread message, in milliseconds since the UNIX epoch</li>
<li>$senders: Email Id of all the senders in the current thread</li>
<li>$labels: Label if any to which this mail thread belongs to</li>
<li>$subject: The subject of the mail threads</li>
<li>$snippet: The mail snippet of the incoming mail</li>
</ul>
<p>So thats a lot of information really, with which we can automate things to a certain extent. Lets see how I use it to send custom auto-reply mails when I am out on vacation. Here is the extendable jaxl class for gmail:</p>
<p><strong>jaxl4gmail.class.php</strong> (<a href="http://code.google.com/p/jaxl/source/browse/trunk/jaxl4gmail.class.php">Download</a>)</p>
<pre name="code" class="php">
  /* Include PHP Mailer Class */
  include_once("class.phpmailer.php");

  /* Include XMPP Class */
  include_once("xmpp.class.php");

  class JAXL extends XMPP {

    /* Define custom mail groups */
    var $family = array("mom@gmail.com","dad@gmail.com");
    var $colleague = array("boss@company.com","manager@company.com");

    /* Define custom mail subject and message */
    var $familySubject = "Hi, Will get back to you";
    var $familyMessage = "Hey, I am currently out on vacation at my grannies house in Delhi. I will return back home by next monday.<br/>Reach out to me at +91-987654321.<br/><br/>With Love,<br/>Abhinav Singh";

    /* Define custom mail subject and message */
    var $colleagueSubject = "[Auto-Reply] Out of Office";
    var $colleagueMessage = "Hi, I am on vacation in my village with very limited access to internet and phone. I will return back home by next monday.<br/><br/>Regards,<br/>Abhinav Singh";

    function eventMessage($fromJid, $content, $offline = FALSE) {

    }

    function eventPresence($fromJid, $status, $photo) {

    }

    function eventNewEMail($total,$thread,$url,$participation,$messages,$date,$senders,$labels,$subject,$snippet) {
      // We only want to send auto-reply message to latest sender
      $sender = $senders[0];

      // Check if the user lie in any category, and send appropriate mail
      if(in_array($sender["address"],$this->family)) {
        $mail = new PHPMailer();
        $mail->From = "youremailid@gmail.com";
        $mail->FromName = "Your Name";
        $mail->Subject = $this->familySubject;
        $mail->MsgHTML($this->familyMessage."<br/><br/>Powered by Jaxl http://code.google.com/p/jaxl");
        $mail->IsHTML(true);
        $mail->AddAddress($sender["address"],$sender["name"]);

        if(!$mail->Send()) $this->logger->logger("Error occured while sending mail to ".$sender["address"]);
        else $this->logger->logger("Mail sent successfully to ".$sender["address"]);
      }
      else if(in_array($sender["address"],$this->colleague)) {
        $mail = new PHPMailer();
        $mail->From = "youremailid@gmail.com";
        $mail->FromName = "Your Name";
        $mail->Subject = $this->colleagueSubject;
        $mail->MsgHTML($this->colleagueMessage."<br/><br/>Powered by Jaxl http://code.google.com/p/jaxl");
        $mail->IsHTML(true);
        $mail->AddAddress($sender["address"],$sender["name"]);

        if(!$mail->Send()) $this->logger->logger("Error occured while sending mail to ".$sender["address"]);
        else $this->logger->logger("Mail sent successfully to ".$sender["address"]);
      }
      else {
        // Do nothing, will handle later on
        $this->logger->logger("No handler for this email id...");
      }
    }

    function setStatus() {
      print "Setting Status...\n";
      $this->sendStatus("Available");
      print "Requesting new mails...\n";
      $this->getNewEMail();
      print "Done\n";
    }

  }
</pre>
<p>The only variables you would like to change in above class are:</p>
<ol>
<li><strong>$family</strong> : An array of email id of your family member</li>
<li><strong>$colleague</strong> : An array of email id of your colleagues</li>
<li><strong>$familySubject</strong> : Subject with which you want to send mails to your family members</li>
<li><strong>$familyMessage</strong> : Mail message which you want to send to you family</li>
<li><strong>$colleagueSubject</strong> : Subject with which you want to send mails to your colleagues</li>
<li><strong>$colleagueMessage</strong> : Mail message which you want to send to you colleagues</li>
</ol>
<p>For further customization, you may want to add more groups and their respective subjects and messages.</p>
<p>Further you may want to create your own custom bots using JAXL for one of the other use case described above. Join official <a href="http://groups.google.com/group/jaxl">JAXL Google Group</a> for future updates and enhancements.</p>
<p>Do let me know if you build any custom bot using JAXL, I will be more than happy to list your bot on <a href="http://code.google.com/p/jaxl">official JAXL google code</a> page.</p>
<p>Enjoy!</p>
<script type="text/javascript">var wordpress_toolbar_urls = ["http:\/\/api.tweetmeme.com\/share?url=http%3A%2F%2Fabhinavsingh.com%2Fblog%2F2009%2F02%2Fprogramatically-control-your-google-mails-using-jaxl-v-104%2F","http:\/\/code.google.com\/p\/jaxl","http:\/\/code.google.com\/apis\/talk\/jep_extensions\/gmail.html","http:\/\/en.wikipedia.org\/wiki\/Push_technology","http:\/\/code.google.com\/p\/jaxl\/source\/browse\/trunk\/jaxl4gmail.class.php","http:\/\/groups.google.com\/group\/jaxl","http:\/\/code.google.com\/p\/jaxl"];var wordpress_toolbar_url = "http://abhinavsingh.com/blog/wp-content/plugins/wordpress-toolbar/toolbar.php";var wordpress_toolbar_oinw = "oinw";var wordpress_toolbar_hash = "aHR0cDovL2FiaGluYXZzaW5naC5jb20vYmxvZy8yMDA5LzAyL3Byb2dyYW1hdGljYWxseS1jb250cm9sLXlvdXItZ29vZ2xlLW1haWxzLXVzaW5nLWpheGwtdi0xMDQvPHdwdGI%2BUHJvZ3JhbWF0aWNhbGx5IGNvbnRyb2wgeW91ciBnb29nbGUgbWFpbHMgdXNpbmcgSkFYTCB2IDEuMC40PHdwdGI%2BaHR0cDovL2FiaGluYXZzaW5naC5jb20vYmxvZzx3cHRiPkFiaGkmIzAzOTtzIFdlYmxvZw%3D%3D";</script><ul class="related_post"><li><a href="http://abhinavsingh.com/blog/2009/05/how-to-broadcast-a-message-to-your-gtalk-friends-using-jaxl/" title="How to broadcast a message to your Gtalk friends using JAXL?">How to broadcast a message to your Gtalk friends using JAXL?</a> (13)</li><li><a href="http://abhinavsingh.com/blog/2009/01/introducing-jaxl-open-source-jabber-xmpp-library/" title="Introducing JAXL &#8211; Open Source Jabber XMPP Library">Introducing JAXL &#8211; Open Source Jabber XMPP Library</a> (92)</li><li><a href="http://abhinavsingh.com/blog/2010/08/releasing-jaxl-2-0-object-oriented-xmpp-framework-in-php/" title="Releasing Jaxl 2.0 &#8211; Object oriented XMPP framework in PHP">Releasing Jaxl 2.0 &#8211; Object oriented XMPP framework in PHP</a> (6)</li><li><a href="http://abhinavsingh.com/blog/2009/11/how-to-use-jaxl-jabber-xmpp-library-in-php-to-import-gtalk-contacts-of-any-user/" title="How to use JAXL (Jabber XMPP Library in PHP) to import Gtalk contacts of any user">How to use JAXL (Jabber XMPP Library in PHP) to import Gtalk contacts of any user</a> (40)</li><li><a href="http://abhinavsingh.com/blog/2009/01/how-to-get-dzone-feeds-as-im-using-jaxl-add-dzonegtalkbotscom/" title="How to get dzone feeds as IM using JAXL? Add dzone@gtalkbots.com">How to get dzone feeds as IM using JAXL? Add dzone@gtalkbots.com</a> (8)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://abhinavsingh.com/blog/2009/02/programatically-control-your-google-mails-using-jaxl-v-104/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
		<item>
		<title>Critical Bug in Gmail integrated Chat</title>
		<link>http://abhinavsingh.com/blog/2008/07/critical-bug-in-gmail-integrated-chat/</link>
		<comments>http://abhinavsingh.com/blog/2008/07/critical-bug-in-gmail-integrated-chat/#comments</comments>
		<pubDate>Fri, 04 Jul 2008 04:44:01 +0000</pubDate>
		<dc:creator>Abhinav Singh</dc:creator>
				<category><![CDATA[Tech News]]></category>
		<category><![CDATA[Bug]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[Gtalk]]></category>

		<guid isPermaLink="false">http://abhinavsingh.com/blog/2008/07/critical-bug-in-gmail-integrated-chat/</guid>
		<description><![CDATA[Well chat is a part of our day to day life (I use Gtalk). While chatting with my friends today who were using gmail integrated chat, I noticed that they were going offline every 2-3 minutes. Finally thanks to Sowmya Sudha, who came up with this critical bug in Gmail integrated chat. Here is what [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fabhinavsingh.com%2Fblog%2F2008%2F07%2Fcritical-bug-in-gmail-integrated-chat%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fabhinavsingh.com%2Fblog%2F2008%2F07%2Fcritical-bug-in-gmail-integrated-chat%2F&amp;source=imoracle&amp;style=normal&amp;service=bit.ly&amp;service_api=R_f027b5a79a20a49b713f16282f1e0857&amp;hashtags=Bug,Gmail,Google,Gtalk&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Well chat is a part of our day to day life (I use Gtalk). While chatting with my friends today who were using gmail integrated chat, I noticed that they were going offline every 2-3 minutes. Finally thanks to Sowmya Sudha, who came up with this critical bug in Gmail integrated chat. Here is what exactly happens when you chat using Gmail integrated chat:</p>
<p><font size="4"><span style="font-weight: bold;">Step 1: You open up a chat window to start chatting</span></font></p>
<p><img src="http://abhinavsingh.com/library/images/gmailbug1.bmp" style="border: 1px solid rgb(204, 204, 204); padding: 5px;" alt="" /></p>
<p><font size="4"><span style="font-weight: bold;">Step 2: Pop out the chat box to get more space for writing and reading messages</span></font></p>
<p><img src="http://abhinavsingh.com/library/images/gmailbug2.bmp" style="border: 1px solid rgb(204, 204, 204); padding: 5px;" alt="" /></p>
<p><font size="4">Step 3: Now for some reason you decide to popin or close the poped out chat</font></p>
<p><img src="http://abhinavsingh.com/library/images/gmailbug3.bmp" style="border: 1px solid rgb(204, 204, 204); padding: 5px;" alt="" /></p>
<p>And <span style="font-weight: bold; color: rgb(255, 0, 0);">Bingo!</p>
<p></span><span style="color: rgb(255, 0, 0);"><span style="color: rgb(0, 0, 0);">Your browser goes for a roll. Tested on Firefox and Flock. Surely will be same on Internet Explorer.</p>
<p>After failing to handle orkut apps efficiently, this is the second time I am seeing any critical bug from google. Are we going to see a downfall in google&#8217;s standards ??</p>
<p>Try out yourself.</p>
<script type="text/javascript">var wordpress_toolbar_urls = ["http:\/\/api.tweetmeme.com\/share?url=http%3A%2F%2Fabhinavsingh.com%2Fblog%2F2008%2F07%2Fcritical-bug-in-gmail-integrated-chat%2F"];var wordpress_toolbar_url = "http://abhinavsingh.com/blog/wp-content/plugins/wordpress-toolbar/toolbar.php";var wordpress_toolbar_oinw = "oinw";var wordpress_toolbar_hash = "aHR0cDovL2FiaGluYXZzaW5naC5jb20vYmxvZy8yMDA4LzA3L2NyaXRpY2FsLWJ1Zy1pbi1nbWFpbC1pbnRlZ3JhdGVkLWNoYXQvPHdwdGI%2BQ3JpdGljYWwgQnVnIGluIEdtYWlsIGludGVncmF0ZWQgQ2hhdDx3cHRiPmh0dHA6Ly9hYmhpbmF2c2luZ2guY29tL2Jsb2c8d3B0Yj5BYmhpJiMwMzk7cyBXZWJsb2c%3D";</script><ul class="related_post"><li><a href="http://abhinavsingh.com/blog/2009/05/how-to-broadcast-a-message-to-your-gtalk-friends-using-jaxl/" title="How to broadcast a message to your Gtalk friends using JAXL?">How to broadcast a message to your Gtalk friends using JAXL?</a> (13)</li><li><a href="http://abhinavsingh.com/blog/2009/02/programatically-control-your-google-mails-using-jaxl-v-104/" title="Programatically control your google mails using JAXL v 1.0.4">Programatically control your google mails using JAXL v 1.0.4</a> (4)</li><li><a href="http://abhinavsingh.com/blog/2008/05/gmail-type-attachment-how-to-make-one/" title="Gmail Type Attachment &#8211; How to make one?">Gmail Type Attachment &#8211; How to make one?</a> (19)</li><li><a href="http://abhinavsingh.com/blog/2009/11/how-to-use-jaxl-jabber-xmpp-library-in-php-to-import-gtalk-contacts-of-any-user/" title="How to use JAXL (Jabber XMPP Library in PHP) to import Gtalk contacts of any user">How to use JAXL (Jabber XMPP Library in PHP) to import Gtalk contacts of any user</a> (40)</li><li><a href="http://abhinavsingh.com/blog/2009/06/seo-analyzer-v-12-adding-support-for-bing-along-with-google-and-yahoo/" title="SEO Analyzer v 1.2 &#8211; Adding support for Bing along with Google and Yahoo">SEO Analyzer v 1.2 &#8211; Adding support for Bing along with Google and Yahoo</a> (24)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://abhinavsingh.com/blog/2008/07/critical-bug-in-gmail-integrated-chat/feed/</wfw:commentRss>
		<slash:comments>34</slash:comments>
		</item>
		<item>
		<title>Gmail Type Attachment &#8211; How to make one?</title>
		<link>http://abhinavsingh.com/blog/2008/05/gmail-type-attachment-how-to-make-one/</link>
		<comments>http://abhinavsingh.com/blog/2008/05/gmail-type-attachment-how-to-make-one/#comments</comments>
		<pubDate>Fri, 30 May 2008 13:39:12 +0000</pubDate>
		<dc:creator>Abhinav Singh</dc:creator>
				<category><![CDATA[Web Development]]></category>
		<category><![CDATA[Ajax]]></category>
		<category><![CDATA[API]]></category>
		<category><![CDATA[CSS]]></category>
		<category><![CDATA[Demo]]></category>
		<category><![CDATA[Gmail]]></category>
		<category><![CDATA[Google]]></category>
		<category><![CDATA[javascript]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://abhinavsingh.com/blog/2008/05/gmail-type-attachment-how-to-make-one/</guid>
		<description><![CDATA[Google and its wide range of web applications have simple changed the way we used to look at internet. Be it the revolutionary fast Google search engine or mail by Google i.e Gmail. You will find enormous amount of threads and forums discussing How do google achieve doing XYZ? or How do they make it [...]]]></description>
			<content:encoded><![CDATA[<div class="tweetmeme_button" style="float: right; margin-left: 10px;">
			<a href="http://api.tweetmeme.com/share?url=http%3A%2F%2Fabhinavsingh.com%2Fblog%2F2008%2F05%2Fgmail-type-attachment-how-to-make-one%2F"><br />
				<img src="http://api.tweetmeme.com/imagebutton.gif?url=http%3A%2F%2Fabhinavsingh.com%2Fblog%2F2008%2F05%2Fgmail-type-attachment-how-to-make-one%2F&amp;source=imoracle&amp;style=normal&amp;service=bit.ly&amp;service_api=R_f027b5a79a20a49b713f16282f1e0857&amp;hashtags=Ajax,API,CSS,Demo,Gmail,Google,javascript,PHP&amp;b=2" height="61" width="50" /><br />
			</a>
		</div>
<p>Google and its wide range of web applications have simple changed the way we used to look at internet. Be it the revolutionary fast Google search engine or mail by Google i.e Gmail. You will find enormous amount of threads and forums discussing <i>How do google achieve doing XYZ?</i> or <i>How do they make it happen fast and efficiently?</i>.</p>
<p>One of the most talked about thing about Gmail is probably how do they achieve making Gmail so simple, convinient, sober, fast and easy. One of the Gmail&#8217;s feature which contribute hugely in making it easier and faster for users is: Its ability to attach your files while you are writing your mail.</p>
<p>I have tried to come up with an exact clone for gmail attachment. Kindly <a href="http://abhinavsingh.com/webdemos/gmailattachmentclone/">click here</a> for the demo and the <a href="http://abhinavsingh.com/webdemos/gmailattachmentclone/GmailAttachmentClone_Version_1.rar">source files</a>.</p>
<p>This is achieved by using an iframe which contains your server side script responsible for handling uploads. As soon as the user select a file to upload, the upload form gets submitted to <b>upload.php</b>, which lies in an iframe. Hence at no point does the user leaves the page and still he gets his file uploaded. Find attached below all the files you need to implement this on your server. Just unzip the file on your server, and you are ready. All the uploaded files will go in th <b>upload</b> folder by default. You may change that in <b>upload.php.</b></p>
<p>Feel free to post a comment back here for any queries etc.</p>
<p>Cheers !</p>
<script type="text/javascript">var wordpress_toolbar_urls = ["http:\/\/api.tweetmeme.com\/share?url=http%3A%2F%2Fabhinavsingh.com%2Fblog%2F2008%2F05%2Fgmail-type-attachment-how-to-make-one%2F","http:\/\/abhinavsingh.com\/webdemos\/gmailattachmentclone\/","http:\/\/abhinavsingh.com\/webdemos\/gmailattachmentclone\/GmailAttachmentClone_Version_1.rar"];var wordpress_toolbar_url = "http://abhinavsingh.com/blog/wp-content/plugins/wordpress-toolbar/toolbar.php";var wordpress_toolbar_oinw = "oinw";var wordpress_toolbar_hash = "aHR0cDovL2FiaGluYXZzaW5naC5jb20vYmxvZy8yMDA4LzA1L2dtYWlsLXR5cGUtYXR0YWNobWVudC1ob3ctdG8tbWFrZS1vbmUvPHdwdGI%2BR21haWwgVHlwZSBBdHRhY2htZW50ICYjODIxMTsgSG93IHRvIG1ha2Ugb25lPzx3cHRiPmh0dHA6Ly9hYmhpbmF2c2luZ2guY29tL2Jsb2c8d3B0Yj5BYmhpJiMwMzk7cyBXZWJsb2c%3D";</script><ul class="related_post"><li><a href="http://abhinavsingh.com/blog/2008/07/photo-cropper-api-how-is-it-achieved/" title="Photo Cropper API: How is it achieved?">Photo Cropper API: How is it achieved?</a> (6)</li><li><a href="http://abhinavsingh.com/blog/2008/06/igoogle-portal-implementation-how-to-do-it/" title="iGoogle Portal Implementation: How to do it?">iGoogle Portal Implementation: How to do it?</a> (12)</li><li><a href="http://abhinavsingh.com/blog/2008/06/photo-tagging-api-easy-plugin-for-your-websites-and-blogs/" title="Photo Tagging API : Easy plugin for your websites and blogs">Photo Tagging API : Easy plugin for your websites and blogs</a> (16)</li><li><a href="http://abhinavsingh.com/blog/2008/07/calendar-with-auto-notification-api-and-demo/" title="Calendar with Auto-Notification : API and demo.">Calendar with Auto-Notification : API and demo.</a> (8)</li><li><a href="http://abhinavsingh.com/blog/2008/06/draggable-divs-how-to-make-one/" title="Draggable DIVs : How to make one?">Draggable DIVs : How to make one?</a> (11)</li></ul>]]></content:encoded>
			<wfw:commentRss>http://abhinavsingh.com/blog/2008/05/gmail-type-attachment-how-to-make-one/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
	</channel>
</rss>

