<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://alpascual.com/utility/FeedStylesheets/atom.xsl" media="screen"?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en"><title type="html">Al Pascual</title><subtitle type="html">&lt;img src="http://alpascual.com/themes/default/images/common/header-logo.gif" alt="" /&gt;</subtitle><id>http://alpascual.com/blog/al/atom.aspx</id><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/default.aspx" /><link rel="self" type="application/atom+xml" href="http://alpascual.com/blog/al/atom.aspx" /><generator uri="http://communityserver.org" version="3.0.20510.895">Community Server</generator><updated>2008-06-07T18:57:00Z</updated><entry><title>AJAX 4.0 release at CodePlex</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/07/22/ajax-4-0-release-at-codeplex.aspx" /><id>http://alpascual.com/blog/al/archive/2008/07/22/ajax-4-0-release-at-codeplex.aspx</id><published>2008-07-23T02:06:00Z</published><updated>2008-07-23T02:06:00Z</updated><content type="html">&lt;p&gt;I just received an email from my MVP lead about these new release. Seems like lately Microsoft is using CodePlex for all their releases, a very good thing. Allows developers to see the code and learn. Microsoft transparency improves every year. Everything started with &lt;a href="http://haacked.com"&gt;Phil Haack&lt;/a&gt; being offered a job there?&lt;/p&gt;  &lt;p&gt;I just started using AJAX 3.5 and I’ll have to start with AJAX 4.0 now. Trying to catch up with Microsoft releases is a full time job. I’ll start playing with it and I’ll be posting the new improvements on these new AJAX version.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=15511"&gt;ASP.NET MVC CodePlex Preview 4 Installer + Source&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;From CodePlex description:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“This release contains a preview version of the following features (that are also described in our Roadmap document: &lt;/em&gt;&lt;a href="http://www.codeplex.com/aspnet/Release/ProjectReleases.aspx?ReleaseId=14924"&gt;&lt;em&gt;ASP.NET AJAX Roadmap&lt;/em&gt;&lt;/a&gt;&lt;em&gt;):&lt;/em&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;em&gt;Client-side template rendering &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Declarative instantiation of behaviors and controls &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;DataView control &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Markup extensions &lt;/em&gt;&lt;/li&gt;    &lt;li&gt;&lt;em&gt;Bindings &lt;/em&gt;&lt;/li&gt; &lt;/ul&gt; &lt;em&gt;The goal of this release is to give some visibility into our design process, allow testing of the technology very early in the product cycle and get feedback on the implementation.”&lt;/em&gt;
Posted from &lt;a href="http://weblogs.asp.net/albertpascual"&gt;http://weblogs.asp.net/albertpascual&lt;/a&gt;&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2637" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author><category term="C#" scheme="http://alpascual.com/blog/al/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://alpascual.com/blog/al/archive/tags/.Net/default.aspx" /><category term="Ajax" scheme="http://alpascual.com/blog/al/archive/tags/Ajax/default.aspx" /><category term="ASP.NET" scheme="http://alpascual.com/blog/al/archive/tags/ASP.NET/default.aspx" /><category term="CodePlex" scheme="http://alpascual.com/blog/al/archive/tags/CodePlex/default.aspx" /></entry><entry><title>Pre-order on Amazon: Developing Service-Oriented AJAX Applications on the Microsoft® Platform</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/07/14/pre-order-on-amazon-developing-service-oriented-ajax-applications-on-the-microsoft-174-platform.aspx" /><id>http://alpascual.com/blog/al/archive/2008/07/14/pre-order-on-amazon-developing-service-oriented-ajax-applications-on-the-microsoft-174-platform.aspx</id><published>2008-07-15T03:31:00Z</published><updated>2008-07-15T03:31:00Z</updated><content type="html">&lt;p&gt;&lt;img src="http://ecx.images-amazon.com/images/I/51nLvnV4NTL._SL500_AA240_.jpg" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;A must have book if you use MS AJAX on your web applications be on the UpdatePanel. Mr. &lt;a href="http://daniellarson.spaces.live.com/Blog/cns!D3543C5837291E93!2287.entry"&gt;Daniel Larson&lt;/a&gt; wrote the amazing book. Great reference guide as a good general real to understand MS AJAX.&lt;/p&gt;  &lt;p&gt;Cheers&lt;/p&gt;  &lt;p&gt;Al&lt;/p&gt;
Posted from &lt;a href="http://weblogs.asp.net/albertpascual"&gt;http://weblogs.asp.net/albertpascual&lt;/a&gt;&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2614" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author><category term="C#" scheme="http://alpascual.com/blog/al/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://alpascual.com/blog/al/archive/tags/.Net/default.aspx" /><category term="Ajax" scheme="http://alpascual.com/blog/al/archive/tags/Ajax/default.aspx" /><category term="ASP.NET" scheme="http://alpascual.com/blog/al/archive/tags/ASP.NET/default.aspx" /><category term="Books" scheme="http://alpascual.com/blog/al/archive/tags/Books/default.aspx" /></entry><entry><title>How to update your iPhone to the new version 2.0</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/07/10/how-to-update-your-iphone-to-the-new-version-2-0.aspx" /><id>http://alpascual.com/blog/al/archive/2008/07/10/how-to-update-your-iphone-to-the-new-version-2-0.aspx</id><published>2008-07-11T01:53:00Z</published><updated>2008-07-11T01:53:00Z</updated><content type="html">&lt;p&gt;The new version of the iPhone 2.0 is here. But Apple hasn’t made it available via iTunes as normally has. Maybe tomorrow morning? In any case, you don’t want to wait any longer. I don’t blame you, I didn’t. I downloaded the new version from Apple (225MB file) and I install it without any issue.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Note: This update will erase all your data, so use a testing iPhone, not your personal one. The final update should be available tomorrow morning from Apple as well as a new version of the iTunes software. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Make sure your iPhone is not unlock. People claims if your iPhone is unlock will brick it for you! Again, nice feature Apple!.&lt;/p&gt;  &lt;p&gt;You can download the version 2.0 from the link below.&lt;/p&gt;  &lt;p&gt;&lt;a title="" href="http://appldnld.apple.com.edgesuite.net/content.info.apple.com/iPhone/061-"&gt;download 2.0 here&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a title="" href="http://www.apple.com/support/downloads/itunes77.html"&gt;Or Download the new iTunes &lt;/a&gt;that supports iPhone 3G and iPhone 2.0 then click the Update button.&lt;/p&gt;  &lt;p&gt;Because I only have one iPhone I am restored it back to my previous version as I need my contacts, emails and pictures. I’ll be updating with the official release only, so I can keep my personal data.&lt;/p&gt;  &lt;p&gt;Cheers&lt;/p&gt;  &lt;p&gt;Al&lt;/p&gt;
Posted from &lt;a href="http://weblogs.asp.net/albertpascual"&gt;http://weblogs.asp.net/albertpascual&lt;/a&gt;&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2607" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author><category term="iPhone" scheme="http://alpascual.com/blog/al/archive/tags/iPhone/default.aspx" /></entry><entry><title>Microsoft MVP Award renewed!</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/07/02/microsoft-mvp-award-renewed.aspx" /><id>http://alpascual.com/blog/al/archive/2008/07/02/microsoft-mvp-award-renewed.aspx</id><published>2008-07-02T09:06:00Z</published><updated>2008-07-02T09:06:00Z</updated><content type="html">&lt;p&gt;I received THE email this morning from my MVP Lead: &lt;/p&gt;  &lt;p&gt;&lt;em&gt;“Dear Albert Pascual, &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Congratulations! We are pleased to present you with the 2008 Microsoft® MVP Award! The MVP Award is our way to say thank you for promoting the spirit of community and improving people’s lives and the industry’s success every day. We appreciate your extraordinary efforts in ASP/ASP.NET technical communities during the past year.(…)”&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://weblogs.asp.net/blogs/albertpascual/WindowsLiveWriter/MicrosoftMVPAwardrenewed_75E5/MVP_FullColor_ForScreen_2.png"&gt;&lt;img title="MVP_FullColor_ForScreen" style="border-right:0px;border-top:0px;border-left:0px;border-bottom:0px;" height="244" alt="MVP_FullColor_ForScreen" src="http://weblogs.asp.net/blogs/albertpascual/WindowsLiveWriter/MicrosoftMVPAwardrenewed_75E5/MVP_FullColor_ForScreen_thumb.png" width="157" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Being an MVP allows you to be part of a great, intelligent group of people as well as tap on resources that otherwise you would never have access to. I believe last year I was able to learn more than any year previously. This year I am committed to take this award to its limits again. Help the .NET community as well as improve myself and the ones around me.&lt;/p&gt;  &lt;p&gt;Thanks again Microsoft for this great opportunity as well thanks to my MVP Lead Suzanna Moran for your patience and support.&lt;/p&gt;  &lt;p&gt;Cheers&lt;/p&gt;  &lt;p&gt;Al&lt;/p&gt;
Posted from &lt;a href="http://weblogs.asp.net/albertpascual"&gt;http://weblogs.asp.net/albertpascual&lt;/a&gt;&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2592" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author><category term="Microsoft" scheme="http://alpascual.com/blog/al/archive/tags/Microsoft/default.aspx" /><category term=".Net" scheme="http://alpascual.com/blog/al/archive/tags/.Net/default.aspx" /><category term="MVP" scheme="http://alpascual.com/blog/al/archive/tags/MVP/default.aspx" /><category term="ASP.NET" scheme="http://alpascual.com/blog/al/archive/tags/ASP.NET/default.aspx" /></entry><entry><title>Speaking at the Inland Empire User Group</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/06/30/speaking-at-the-inland-empire-user-group.aspx" /><id>http://alpascual.com/blog/al/archive/2008/06/30/speaking-at-the-inland-empire-user-group.aspx</id><published>2008-07-01T03:12:00Z</published><updated>2008-07-01T03:12:00Z</updated><content type="html">&lt;p&gt;July 8th I’ll be presenting &lt;a href="http://geotwitter.net"&gt;http://geotwitter.net&lt;/a&gt; at the &lt;a title="" href="http://www.iedotnetug.org/UG/"&gt;Inland Empire User G&lt;/a&gt;roups. I don’t have a power point presentation yet for &lt;a href="http://geotwitter.net"&gt;GeoTwitter&lt;/a&gt;. Right now I show the website and each part of the code as well as how to connect to the C&lt;a href="http://codeplex.com/geotwitter"&gt;odePlex&lt;/a&gt; to download the latest and greatest. However there isn’t Internet access at the IEUG.&lt;/p&gt;  &lt;p&gt;Looks like I’ll be working on july 7th to create a presentation. If you are around SoCal on july 8th stop by.&lt;/p&gt;  &lt;p&gt;Hopefully be then, GeoTwitter will include support to cross post to &lt;a href="http://pownce.com/"&gt;Pownce&lt;/a&gt; and &lt;a href="http://jaiku.com/"&gt;Jaiku&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Cheers&lt;/p&gt;  &lt;p&gt;Al&lt;/p&gt;
Posted from &lt;a href="http://weblogs.asp.net/albertpascual"&gt;http://weblogs.asp.net/albertpascual&lt;/a&gt;&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2584" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author><category term="C#" scheme="http://alpascual.com/blog/al/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://alpascual.com/blog/al/archive/tags/.Net/default.aspx" /><category term="ASP.NET" scheme="http://alpascual.com/blog/al/archive/tags/ASP.NET/default.aspx" /><category term="Geo Twitter" scheme="http://alpascual.com/blog/al/archive/tags/Geo+Twitter/default.aspx" /><category term="IEUG" scheme="http://alpascual.com/blog/al/archive/tags/IEUG/default.aspx" /></entry><entry><title>ArcGIS 9.3 has was release today</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/06/26/arcgis-9-3-has-was-release-today.aspx" /><id>http://alpascual.com/blog/al/archive/2008/06/26/arcgis-9-3-has-was-release-today.aspx</id><published>2008-06-27T03:26:00Z</published><updated>2008-06-27T03:26:00Z</updated><content type="html">&lt;p&gt;ArcGIS 9.3 Release comes with loads of online resources for anybody to get up to speed fast:&lt;/p&gt;  &lt;p&gt;What’s new on &lt;a href="http://www.esri.com/software/arcgis/about/whats-new.html"&gt;ArcGIS 9.3&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Watch the &lt;a href="http://www.esri.com/flashmedia/arcgis_desktop_93/arcgis_desktop_93.html"&gt;presentation here.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Documentation can be &lt;a href="http://resources.esri.com/gateway/index.cfm"&gt;found here.&lt;/a&gt; With great ADF and JavaScript samples.&lt;/p&gt;  &lt;p&gt;You’ll find online demos that will &lt;a href="http://www.esri.com/software/arcgis/arcgisserver/about/demos.html"&gt;speed up your development&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;You can submit your project and &lt;a href="http://resources.esri.com/showcase/"&gt;share it with the world.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Need help? Use &lt;a href="http://support.esri.com/index.cfm?fa=forums.gateway"&gt;the user Forums.&lt;/a&gt; Become an &lt;a href="http://forums.esri.com/help/help.asp?c=93#mvp"&gt;ESRI MVP&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Introduction to &lt;a href="http://vid01.esri.com/winmmedia/server06.wmv"&gt;ArcGIS Server.&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Microsoft Visual Studio 2005 and 2008 are supported. &lt;/p&gt;  &lt;p&gt;My &lt;a href="http://alpascual.com/blog/al/archive/2008/06/25/hospital-implements-high-tech-emergency-response-system.aspx"&gt;latest project release&lt;/a&gt; was created using ArcGIS Server 9.3 with the JavaScript API. &lt;/p&gt;  &lt;p&gt;Cheers&lt;/p&gt;  &lt;p&gt;Al&lt;/p&gt;
Posted from &lt;a href="http://weblogs.asp.net/albertpascual"&gt;http://weblogs.asp.net/albertpascual&lt;/a&gt;&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2579" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author><category term="C#" scheme="http://alpascual.com/blog/al/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://alpascual.com/blog/al/archive/tags/.Net/default.aspx" /><category term="ESRI" scheme="http://alpascual.com/blog/al/archive/tags/ESRI/default.aspx" /><category term="ASP.NET" scheme="http://alpascual.com/blog/al/archive/tags/ASP.NET/default.aspx" /></entry><entry><title>Hospital Implements High-Tech Emergency Response System</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/06/25/hospital-implements-high-tech-emergency-response-system.aspx" /><id>http://alpascual.com/blog/al/archive/2008/06/25/hospital-implements-high-tech-emergency-response-system.aspx</id><published>2008-06-26T03:10:00Z</published><updated>2008-06-26T03:10:00Z</updated><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;p&gt;The project I develop is in the news today:&lt;/p&gt;  &lt;p&gt;From Information Week:&lt;/p&gt;  &lt;p&gt;&lt;em&gt;“GPS-enabled &lt;/em&gt;&lt;a href="http://www.techweb.com/encyclopedia/defineterm.jhtml?term=cell%20phones&amp;amp;x=&amp;amp;y="&gt;&lt;em&gt;cell phones&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and other mobile location-tracking technologies used for Enhanced 911 capabilities are helping emergency response workers find people in trouble. &lt;/em&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;The deployment of a geographic &lt;/em&gt;&lt;a href="http://www.techweb.com/encyclopedia/defineterm.jhtml?term=information%20system&amp;amp;x=&amp;amp;y="&gt;&lt;em&gt;information system&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and mobile applications in southern California is enabling emergency response personnel to more quickly and efficiently deploy rescue teams based on near real-time data about traffic conditions, the location of nearby ambulances and helicopters, and other factors, such as bed availability at area hospitals. “&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Read The whole article here: &lt;a href="http://www.informationweek.com/news/personal_tech/gps/showArticle.jhtml?articleID=208800864"&gt;Information Week Article&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Cheers&lt;/p&gt;  &lt;p&gt;Al&lt;/p&gt;
Posted from &lt;a href="http://weblogs.asp.net/albertpascual"&gt;http://weblogs.asp.net/albertpascual&lt;/a&gt;&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2578" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author><category term="C#" scheme="http://alpascual.com/blog/al/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://alpascual.com/blog/al/archive/tags/.Net/default.aspx" /><category term="JavaScript" scheme="http://alpascual.com/blog/al/archive/tags/JavaScript/default.aspx" /><category term="ESRI" scheme="http://alpascual.com/blog/al/archive/tags/ESRI/default.aspx" /><category term="ASP.NET" scheme="http://alpascual.com/blog/al/archive/tags/ASP.NET/default.aspx" /></entry><entry><title>UDP Packet Generator</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/06/24/udp-packet-generator.aspx" /><id>http://alpascual.com/blog/al/archive/2008/06/24/udp-packet-generator.aspx</id><published>2008-06-25T03:18:00Z</published><updated>2008-06-25T03:18:00Z</updated><content type="html">&lt;p&gt;Tonight I need a UDP Packet generator, so I thought just to paste it here so I can help anybody looking for something like that. I have a few files I want to transfer using UDP to another machine. Remember that UDP does not warranty delivery.&lt;/p&gt;  &lt;p&gt;Change the localhost to the destination IP as well as the destination port number.&lt;/p&gt;  &lt;pre class="code"&gt;System.Net.Sockets.&lt;span style="color:#2b91af;"&gt;UdpClient &lt;/span&gt;client = &lt;span style="color:blue;"&gt;new &lt;/span&gt;System.Net.Sockets.&lt;span style="color:#2b91af;"&gt;UdpClient&lt;/span&gt;();

            client.Connect(&lt;span style="color:#a31515;"&gt;&amp;quot;localhost&amp;quot;&lt;/span&gt;, 601);

            System.IO.&lt;span style="color:#2b91af;"&gt;DirectoryInfo &lt;/span&gt;info = &lt;span style="color:blue;"&gt;new &lt;/span&gt;System.IO.&lt;span style="color:#2b91af;"&gt;DirectoryInfo&lt;/span&gt;(&lt;span style="color:#a31515;"&gt;&amp;quot;C:\\temp\\udp&amp;quot;&lt;/span&gt;);
            System.IO.&lt;span style="color:#2b91af;"&gt;FileInfo &lt;/span&gt;[] fileInfo = info.GetFiles();

            &lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(System.IO.&lt;span style="color:#2b91af;"&gt;FileInfo &lt;/span&gt;inf &lt;span style="color:blue;"&gt;in &lt;/span&gt;fileInfo)
            {
                &lt;span style="color:blue;"&gt;string &lt;/span&gt;filePath = inf.FullName;

                &lt;span style="color:#2b91af;"&gt;StreamReader &lt;/span&gt;readStream = System.IO.&lt;span style="color:#2b91af;"&gt;File&lt;/span&gt;.OpenText(filePath);

                &lt;span style="color:blue;"&gt;byte &lt;/span&gt;[] stre = System.Text.&lt;span style="color:#2b91af;"&gt;Encoding&lt;/span&gt;.Unicode.GetBytes(readStream.ReadToEnd());

                readStream.Close();

                client.Send(stre, stre.Length);
            }

            client.Close();&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Cheers&lt;/p&gt;

&lt;p&gt;Al&lt;/p&gt;
Posted from &lt;a href="http://weblogs.asp.net/albertpascual"&gt;http://weblogs.asp.net/albertpascual&lt;/a&gt;&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2575" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author><category term="C#" scheme="http://alpascual.com/blog/al/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://alpascual.com/blog/al/archive/tags/.Net/default.aspx" /><category term="Code" scheme="http://alpascual.com/blog/al/archive/tags/Code/default.aspx" /><category term="Sockets" scheme="http://alpascual.com/blog/al/archive/tags/Sockets/default.aspx" /></entry><entry><title>Best practices for using LINQ to SQL on your existing web applications.</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/06/19/best-practices-for-using-linq-to-sql-on-your-existing-web-applications.aspx" /><id>http://alpascual.com/blog/al/archive/2008/06/19/best-practices-for-using-linq-to-sql-on-your-existing-web-applications.aspx</id><published>2008-06-20T02:31:00Z</published><updated>2008-06-20T02:31:00Z</updated><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;p&gt;Previously I have been talking about the &lt;a href="http://alpascual.com/blog/al/archive/2008/05/01/why-there-is-still-a-limitation-in-linq-to-sql.aspx"&gt;limitations of Linq to SQL&lt;/a&gt; for your data layer. You should read it &lt;a href="http://alpascual.com/blog/al/archive/2008/05/01/why-there-is-still-a-limitation-in-linq-to-sql.aspx"&gt;here&lt;/a&gt;. This post is part of the Linq to SQL &lt;a href="http://alpascual.com/blog/al/archive/tags/LINQ+to+SQL/default.aspx"&gt;series&lt;/a&gt;. Linq to SQL is a great technology I found that adding the data layer on the web application will just work until you are deploying the application to another computer with another database.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#0080ff"&gt;Mixing 2.0 Web app with 3.5 LINQ to SQL&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color:#2b91af;"&gt;         SavedDataContext &lt;/span&gt;context = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;SavedDataContext&lt;/span&gt;(_ConnectionString);
           
            &lt;span style="color:blue;"&gt;var &lt;/span&gt;result = &lt;span style="color:blue;"&gt;from &lt;/span&gt;c &lt;span style="color:blue;"&gt;in &lt;/span&gt;context.viewerContexts
                         &lt;span style="color:blue;"&gt;where &lt;/span&gt;c.UserID == userName
                         &lt;span style="color:blue;"&gt;select new
                         &lt;/span&gt;{
                             Name = c.Name,
                             ID = c.ID,
                         };

            &lt;span style="color:#2b91af;"&gt;DataTable &lt;/span&gt;dt = &lt;span style="color:blue;"&gt;new &lt;/span&gt;&lt;span style="color:#2b91af;"&gt;DataTable&lt;/span&gt;();
            dt.Columns.Add(&lt;span style="color:#a31515;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;);
            dt.Columns.Add(&lt;span style="color:#a31515;"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;);

            &lt;span style="color:blue;"&gt;foreach &lt;/span&gt;(&lt;span style="color:blue;"&gt;var &lt;/span&gt;item &lt;span style="color:blue;"&gt;in &lt;/span&gt;result)
            {               
                &lt;span style="color:#2b91af;"&gt;DataRow &lt;/span&gt;row = dt.NewRow();
                row[&lt;span style="color:#a31515;"&gt;&amp;quot;ID&amp;quot;&lt;/span&gt;] = item.ID;
                row[&lt;span style="color:#a31515;"&gt;&amp;quot;Name&amp;quot;&lt;/span&gt;] = item.Name;
                dt.Rows.Add(row);
            }

            &lt;span style="color:blue;"&gt;return &lt;/span&gt;dt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#0080ff"&gt;Problems with Connection Strings.&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;If you create the LINQ to SQL on the web application, by now you realized that deploying it is not a good option, as the connection string is embedded in the code. If you created a class library then you are save, just override the connection string in the web.config:&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color:blue;"&gt;     &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;
        &amp;lt;&lt;/span&gt;&lt;span style="color:#a31515;"&gt;add &lt;/span&gt;&lt;span style="color:red;"&gt;name&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;AssemblyName.Properties.Settings.MyConnectionString&lt;/span&gt;&amp;quot;
            &lt;span style="color:red;"&gt;connectionString&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;Data Source=myserver;Initial Catalog=mydatabase_TEST;Persist Security Info=True;User ID=myuserid;Password=mypassword&lt;/span&gt;&amp;quot;
            &lt;span style="color:red;"&gt;providerName&lt;/span&gt;&lt;span style="color:blue;"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color:blue;"&gt;System.Data.SqlClient&lt;/span&gt;&amp;quot; &lt;span style="color:blue;"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color:#a31515;"&gt;connectionStrings&lt;/span&gt;&lt;span style="color:blue;"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#0080ff"&gt;Xml converting types.&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When you create a column on SQL as a xml, LINQ to SQL will convert that column as an XElement looks like instead of a string. If you try to set that element from a string you’ll get the error:&lt;/p&gt;

&lt;p&gt;Cannot implicitly convert type &amp;#39;string&amp;#39; to &amp;#39;System.Xml.Linq.XElement&amp;#39; &lt;/p&gt;

&lt;p&gt;So you’ll have to set the content as: Viewer.Element.Add(Mycontent);&lt;/p&gt;

&lt;p&gt;Maybe this is smart to only allow you to pass a XElement instead of string, the validation is done in your code instead of raising an exception.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;u&gt;&lt;font color="#0080ff"&gt;Summary.&lt;/font&gt;&lt;/u&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The wonderful world of LINQ to SQL is getting better every day. It’s time to jump into the code to start creating your own data layer as a Class Library in 3.5. You won’t have to convert the web application to 3.5, just make sure to return objects supported by framework 2.0.&lt;/p&gt;
&lt;a href="http://11011.net/software/vspaste"&gt;&lt;/a&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;
&lt;span class="sbmLink"&gt;
  &lt;table cellspacing="1" cellpadding="1"&gt;
      &lt;tr&gt;
        &lt;td class="sbmText"&gt;Share this post : &lt;/td&gt;

        &lt;td class="sbmDim"&gt;&lt;a class="sbmDim" title="Post it to del.icio.us" href="http://del.icio.us/post?url=http://alpascual.com/blog/al&amp;amp;;title=Al&amp;#39;s%20Blog" target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/deliciou4.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td class="sbmDim"&gt;&lt;a class="sbmDim" title="Post it to digg" href="http://digg.com/submit?phase=2&amp;amp;url=http://alpascual.com/blog/al&amp;amp;title=Al&amp;#39;s%20Blog" target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/digg14.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td class="sbmDim"&gt;&lt;a class="sbmDim" title="Post it to live" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://alpascual.com/blog/al&amp;amp;title=Al&amp;#39;s%20Blog" target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/live4.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;

        &lt;td class="sbmDim"&gt;&lt;a class="sbmDim" title="Post it to technorati!" href="http://technorati.com/faves/?add=http://alpascual.com/blog/al&amp;amp;title=Al&amp;#39;s%20Blog" target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/technora4.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;
      &lt;/tr&gt;
    &lt;/table&gt;
&lt;/span&gt;
Posted from &lt;a href="http://weblogs.asp.net/albertpascual"&gt;http://weblogs.asp.net/albertpascual&lt;/a&gt;&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2570" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author><category term="C#" scheme="http://alpascual.com/blog/al/archive/tags/C_2300_/default.aspx" /><category term=".Net" scheme="http://alpascual.com/blog/al/archive/tags/.Net/default.aspx" /><category term="Code" scheme="http://alpascual.com/blog/al/archive/tags/Code/default.aspx" /><category term="ASP.NET" scheme="http://alpascual.com/blog/al/archive/tags/ASP.NET/default.aspx" /><category term="LINQ to SQL" scheme="http://alpascual.com/blog/al/archive/tags/LINQ+to+SQL/default.aspx" /></entry><entry><title>And the free MSDN Subscription goes to …</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/06/16/and-the-free-msdn-subscription-goes-to.aspx" /><id>http://alpascual.com/blog/al/archive/2008/06/16/and-the-free-msdn-subscription-goes-to.aspx</id><published>2008-06-17T03:27:00Z</published><updated>2008-06-17T03:27:00Z</updated><content type="html">&lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt; &lt;span class="sbmLink"&gt;   &lt;table cellspacing="1" cellpadding="1"&gt;       &lt;tr&gt;         &lt;td class="sbmText"&gt;Share this post : &lt;/td&gt;          &lt;td class="sbmDim"&gt;&lt;a class="sbmDim" title="Post it to del.icio.us" href="http://del.icio.us/post?url=http://alpascual.com/blog/al/archive/2008/06/16/and-the-free-msdn-subscription-goes-to.aspx&amp;amp;;title=And%20the%20free%20MSDN%20subscription%20goes%20to" target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/deliciou4.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;          &lt;td class="sbmDim"&gt;&lt;a class="sbmDim" title="Post it to digg" href="http://digg.com/submit?phase=2&amp;amp;url=http://alpascual.com/blog/al/archive/2008/06/16/and-the-free-msdn-subscription-goes-to.aspx&amp;amp;title=And%20the%20free%20MSDN%20subscription%20goes%20to" target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/digg14.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;          &lt;td class="sbmDim"&gt;&lt;a class="sbmDim" title="Post it to live" href="https://favorites.live.com/quickadd.aspx?marklet=1&amp;amp;mkt=en-us&amp;amp;url=http://alpascual.com/blog/al/archive/2008/06/16/and-the-free-msdn-subscription-goes-to.aspx&amp;amp;title=And%20the%20free%20MSDN%20subscription%20goes%20to" target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/live4.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;          &lt;td class="sbmDim"&gt;&lt;a class="sbmDim" title="Post it to technorati!" href="http://technorati.com/faves/?add=http://alpascual.com/blog/al/archive/2008/06/16/and-the-free-msdn-subscription-goes-to.aspx&amp;amp;title=And%20the%20free%20MSDN%20subscription%20goes%20to" target="_blank"&gt;&lt;img src="http://blogs.msdn.com/blogfiles/rahulso/WindowsLiveWriter/IconsfordifferentSocialBookmarkingSites_B387/technora4.png" border="0" alt="" /&gt;&lt;/a&gt;&lt;/td&gt;       &lt;/tr&gt;     &lt;/table&gt; &lt;/span&gt;  &lt;p&gt;I spent this weekend looking at all the submission from all around the world. I finally narrow it down to 5 people that in my mind and opinion, even maybe wrong, they deserve the Premium MSDN subscription. I was looking for a person that could use the MSDN subscription for the community and will improve the skills of the people around him. Somebody that helps and volunteers in the .NET world. &lt;/p&gt;  &lt;p&gt;After a huge consideration as in my opinion many of the people emailing me should receive a Free MSDN subscription, at the end I have to select a winner!&lt;/p&gt;  &lt;p&gt;And the free MSDN subscription goes to … &lt;a href="http://dotnetstories.wordpress.com/"&gt;Nikolaos Kantzelis&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;you can read his blog &lt;a href="http://dotnetstories.wordpress.com/"&gt;here&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Thanks everybody for emailing me. Because you didn’t win does not mean you were not the best to receive this free MSDN subscription as I am not the best person to make a choice like that I’ve learned. &lt;/p&gt;  &lt;p&gt;Cheers&lt;/p&gt;  &lt;p&gt;Al&lt;/p&gt;
Posted from &lt;a href="http://weblogs.asp.net/albertpascual"&gt;http://weblogs.asp.net/albertpascual&lt;/a&gt;&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2566" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author><category term="Microsoft" scheme="http://alpascual.com/blog/al/archive/tags/Microsoft/default.aspx" /><category term=".Net" scheme="http://alpascual.com/blog/al/archive/tags/.Net/default.aspx" /><category term="ASP.NET" scheme="http://alpascual.com/blog/al/archive/tags/ASP.NET/default.aspx" /><category term="MSDN" scheme="http://alpascual.com/blog/al/archive/tags/MSDN/default.aspx" /></entry><entry><title>Code Collection: Old code to improve the DataGrid control</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/06/14/code-collection-old-code-to-improve-the-datagrid-control.aspx" /><id>http://alpascual.com/blog/al/archive/2008/06/14/code-collection-old-code-to-improve-the-datagrid-control.aspx</id><published>2008-06-14T18:36:00Z</published><updated>2008-06-14T18:36:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;Found this code in my old hard disk, I remember I received a few emails about how to improve a control, this could be helpful to somebody:&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;/// Summary description for MyDataGrid.&lt;br /&gt;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;public class MyDataGrid : System.Web.UI.WebControls.DataGrid&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;[Category(&amp;quot;Design&amp;quot;), Description(&amp;quot;OverLink Color&amp;quot;)]&lt;br /&gt;&amp;nbsp;&amp;nbsp;private string sBackgroundColor = &amp;quot;#dddddd&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string SpecialLinkColor&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;get{return(sBackgroundColor);}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;set{sBackgroundColor=value;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;protected override void Render(System.Web.UI.HtmlTextWriter writer)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string sDataGridID = this.ID.ToString();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string sJavaScript = &amp;quot;&amp;lt;script language=\&amp;quot;javascript\&amp;quot;&amp;gt;\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;function ShowRow1(elm, BgColour, FgColour)\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;{\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;elm.bgColor = BgColour;\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;}\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;function HilightRow(elm, hover, highlight)\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;{\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;&amp;nbsp;var BgColour = (hover)? \&amp;quot;&amp;quot; + SpecialLinkColor + &amp;quot;\&amp;quot; :&amp;nbsp; \&amp;quot;white\&amp;quot;;\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;&amp;nbsp;var FgColour = \&amp;quot;black\&amp;quot;;\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;&amp;nbsp;var Cursor&amp;nbsp;&amp;nbsp; = (hover)? \&amp;quot;hand\&amp;quot; :&amp;nbsp; \&amp;quot;auto\&amp;quot;;\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;&amp;nbsp;ShowRow1(elm, BgColour, FgColour);\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;&amp;nbsp;return false;\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;}\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;function RowOn()&amp;nbsp; { return HilightRow(this, true, false);&amp;nbsp; }\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;function RowOff() { return HilightRow(this, false, false); }\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;function RowClick()\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;{\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;&amp;nbsp;HilightRow(this, false, true);\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;&amp;nbsp;var elm = eval(&amp;#39;document.getElementById(\&amp;quot;&amp;#39; + this.name + &amp;#39;_link\&amp;quot;)&amp;#39;);\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;&amp;nbsp;if (elm) elm.click();\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;&amp;nbsp;return true;\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;}\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;var table = document.getElementById(\&amp;quot;&amp;quot; + sDataGridID + &amp;quot;\&amp;quot;);\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;var rows = table.getElementsByTagName(\&amp;quot;tr\&amp;quot;);\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;for (var i = 0; i &amp;lt; rows.length; i++) {\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;rows[i].onmouseover = RowOn;\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;rows[i].onmouseout&amp;nbsp; = RowOff;\r&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//&amp;quot;rows[i].onclick&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; = RowClick;&amp;quot; +&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;quot;}\r&amp;lt;/script&amp;gt;\r&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;base.Render (writer);&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;base.Page.Response.Write(sJavaScript);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Cheers&lt;/p&gt;
&lt;p&gt;Al&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2561" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author><category term="C#" scheme="http://alpascual.com/blog/al/archive/tags/C_2300_/default.aspx" /><category term="ASP.NET 2.0" scheme="http://alpascual.com/blog/al/archive/tags/ASP.NET+2.0/default.aspx" /><category term="Code Snip Collection" scheme="http://alpascual.com/blog/al/archive/tags/Code+Snip+Collection/default.aspx" /></entry><entry><title>Code Collection: Old code for retriving emails using POP3</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/06/14/code-collection-old-code-for-retriving-emails-using-pop3.aspx" /><id>http://alpascual.com/blog/al/archive/2008/06/14/code-collection-old-code-for-retriving-emails-using-pop3.aspx</id><published>2008-06-14T15:40:00Z</published><updated>2008-06-14T15:40:00Z</updated><content type="html">&lt;p&gt;&amp;nbsp;Looking still around my hard disk I am finding lots of code that I didn&amp;#39;t know I had, I hope somebody can use it. This code is to handle email POP3.&lt;/p&gt;
&lt;p&gt;//&lt;br /&gt;// To do&lt;br /&gt;// Extracting mail attachment, and supporting differenet mime types and content&lt;br /&gt;// types.&lt;br /&gt;//------------------------------------------------------------------------------&lt;/p&gt;
&lt;p&gt;using System;&lt;br /&gt;using System.Net;&lt;br /&gt;using System.Net.Sockets;&lt;br /&gt;using System.IO;&lt;br /&gt;using System.Collections;&lt;br /&gt;using System.Text;&lt;/p&gt;
&lt;p&gt;namespace SuperJockey&lt;br /&gt;{&lt;br /&gt;&amp;nbsp;class MailMessage&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string contentType;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string contentTransferEncoding;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string message;&lt;br /&gt;&amp;nbsp;};&lt;/p&gt;
&lt;p&gt;&amp;nbsp;public class MailHeader&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;public int number;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public int size;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string received;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string received2;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string received3;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string from;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string to;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string subject;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string date;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string messageID;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string mimeVersion;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string contentType;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string boundary;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string X_Priority;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string X_MSMail_Priority;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string X_Mailer;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string importance;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string X_MimeOLE;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string X_RCPT_TO;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string X_UIDL;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string status;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;public ArrayList messages;&lt;br /&gt;&amp;nbsp;};&lt;/p&gt;
&lt;p&gt;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;/// Minimal POP3 Commands:&lt;br /&gt;&amp;nbsp;/// &lt;br /&gt;&amp;nbsp;/// USER name&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid in the AUTHORIZATION state&lt;br /&gt;&amp;nbsp;/// PASS string&lt;br /&gt;&amp;nbsp;/// QUIT&lt;br /&gt;&amp;nbsp;/// &lt;br /&gt;&amp;nbsp;/// STAT&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid in the TRANSACTION state&lt;br /&gt;&amp;nbsp;/// LIST [msg]&lt;br /&gt;&amp;nbsp;/// RETR msg&lt;br /&gt;&amp;nbsp;/// DELE msg&lt;br /&gt;&amp;nbsp;/// NOOP&lt;br /&gt;&amp;nbsp;/// RSET&lt;br /&gt;&amp;nbsp;/// QUIT&lt;br /&gt;&amp;nbsp;/// &lt;br /&gt;&amp;nbsp;/// Optional POP3 Commands:&lt;br /&gt;&amp;nbsp;/// APOP name digest&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid in the AUTHORIZATION state&lt;br /&gt;&amp;nbsp;/// TOP msg n&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; valid in the TRANSACTION state&lt;br /&gt;&amp;nbsp;/// UIDL [msg]&lt;br /&gt;&amp;nbsp;/// &lt;br /&gt;&amp;nbsp;/// POP3 Replies:&lt;br /&gt;&amp;nbsp;/// +OK&lt;br /&gt;&amp;nbsp;/// -ERR&lt;br /&gt;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;class MailPOP3&lt;br /&gt;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;// variables for pop3 class&lt;br /&gt;&amp;nbsp;&amp;nbsp;public TcpClient tcpClient;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public NetworkStream netStream;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public StreamReader&amp;nbsp; streamReader;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Connect and authorized user.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;pop3host&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Pop3 Mailserver&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;port&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Port of the mailserver, normaly 110&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;user&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// a string identifying a mailbox (required), which is of&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// significance ONLY to the server&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;pwd&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// a server/mailbox-specific password (required)&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string DoConnect(string pop3host,int port, string user, string pwd)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// create POP3 connection&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tcpClient = new TcpClient(pop3host,port);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// initialization&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;netStream = tcpClient.GetStream();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;streamReader = new StreamReader(tcpClient.GetStream());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string retVal = streamReader.ReadLine();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(!retVal.StartsWith(&amp;quot;+OK&amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return retVal;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// send login&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;retVal = SendCommand(&amp;quot;USER &amp;quot;+ user + &amp;quot;\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Possible Responses:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// +OK name is a valid mailbox&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// -ERR never heard of mailbox name&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(!retVal.StartsWith(&amp;quot;+OK&amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return retVal;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// send password&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Possible Responses:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// +OK maildrop locked and ready&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// -ERR invalid password&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// -ERR unable to lock maildrop&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return SendCommand(&amp;quot;PASS &amp;quot; + pwd + &amp;quot;\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch(Exception err)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return (&amp;quot;-ERR &amp;quot; + err.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Send a command to the pop3 server&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;command&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// command string&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;string SendCommand(string command)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;byte[] bData = System.Text.Encoding.ASCII.GetBytes(command.ToCharArray());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;netStream.Write(bData,0,bData.Length);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return streamReader.ReadLine();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch (Exception err)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return (&amp;quot;-ERR &amp;quot; + err.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;command&amp;quot;&amp;gt;&amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string GetCommandBlock(string command)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StringBuilder CommandBlock = new StringBuilder();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string sTemp = SendCommand(command);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(sTemp.StartsWith(&amp;quot;+OK&amp;quot;)) &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;do&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;CommandBlock.Append(sTemp+&amp;quot;\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sTemp = streamReader.ReadLine();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}while(sTemp != &amp;quot;.&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return sTemp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch(Exception err)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return (&amp;quot;-ERR &amp;quot; + err.ToString());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return CommandBlock.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Restrictions:&lt;br /&gt;&amp;nbsp;&amp;nbsp;///&amp;nbsp; may only be given in the TRANSACTION state&lt;br /&gt;&amp;nbsp;&amp;nbsp;///&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// The POP3 server issues a positive response with a line&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// containing information for the maildrop.&amp;nbsp; This line is&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// called a &amp;quot;drop listing&amp;quot; for that maildrop.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// In order to simplify parsing, all POP3 servers are&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// required to use a certain format for drop listings.&amp;nbsp; The&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// positive response consists of &amp;quot;+OK&amp;quot; followed by a single&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// space, the number of messages in the maildrop, a single&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// space, and the size of the maildrop in octets.&amp;nbsp; This memo&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// makes no requirement on what follows the maildrop size.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Minimal implementations should just end that line of the&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// response with a CRLF pair.&amp;nbsp; More advanced implementations&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// may include other information.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// NOTE: This memo STRONGLY discourages implementations&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// from supplying additional information in the drop&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// listing.&amp;nbsp; Other, optional, facilities are discussed&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// later on which permit the client to parse the messages&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// in the maildrop.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Note that messages marked as deleted are not counted in&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// either total.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Possible Responses:&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// +OK nn mm&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string GetStat()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Send STAT command to get number of mail and total size&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return SendCommand(&amp;quot;STAT\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;public string GetList()// Send LIST command with no parametrs to get all information&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;// For saving &amp;#39;list&amp;#39; results&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return GetCommandBlock(&amp;quot;LIST\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Restrictions: &lt;br /&gt;&amp;nbsp;&amp;nbsp;///&amp;nbsp;&amp;nbsp; may only be given in the TRANSACTION state&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &lt;br /&gt;&amp;nbsp;&amp;nbsp;/// If an argument was given and the POP3 server issues a&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// positive response with a line containing information for&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// that message.&amp;nbsp; This line is called a &amp;quot;scan listing&amp;quot; for&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// that message.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// If no argument was given and the POP3 server issues a&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// positive response, then the response given is multi-line.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// After the initial +OK, for each message in the maildrop,&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// the POP3 server responds with a line containing&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// information for that message.&amp;nbsp; This line is also called a&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;quot;scan listing&amp;quot; for that message.&amp;nbsp; If there are no&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// messages in the maildrop, then the POP3 server responds&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// with no scan listings--it issues a positive response&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// followed by a line containing a termination octet and a&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// CRLF pair.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// In order to simplify parsing, all POP3 servers are&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// required to use a certain format for scan listings. A&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// scan listing consists of the message-number of the&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// message, followed by a single space and the exact size of&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// the message in octets. This memo makes no requirement on &lt;br /&gt;&amp;nbsp;&amp;nbsp;/// what follows the message size in the scan listing. Minimal&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// implementations should just end that line of the response&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// with a CRLF pair.&amp;nbsp; More advanced implementations may&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// include other information, as parsed from the message.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &lt;br /&gt;&amp;nbsp;&amp;nbsp;/// NOTE: This memo STRONGLY discourages implementations&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// from supplying additional information in the scan&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// listing.&amp;nbsp; Other, optional, facilities are discussed&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// later on which permit the client to parse the messages&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// in the maildrop.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Note that messages marked as deleted are not listed.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;num&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// a message-number (optional), which, if present, may NOT &lt;br /&gt;&amp;nbsp;&amp;nbsp;/// refer to a message marked as deleted&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Possible Responses: &lt;br /&gt;&amp;nbsp;&amp;nbsp;/// +OK scan listing follows&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// -ERR no such message&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string GetList(int num)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return SendCommand(&amp;quot;LIST &amp;quot; + num + &amp;quot;\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;bool ReadMessageBody (MailHeader mailHeader)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(mailHeader.messages==null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.messages = new ArrayList();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MailMessage mailMessage = new MailMessage();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string delimiter = &amp;quot;--&amp;quot; + mailHeader.boundary;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StringBuilder sBody = new StringBuilder();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(true)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string sTemp = streamReader.ReadLine();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(sTemp.StartsWith(delimiter) || sTemp==&amp;quot;.&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailMessage.message = sBody.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.messages.Add(mailMessage);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if ( sTemp == &amp;quot;.&amp;quot; )&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return true;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(sTemp.Remove(0,delimiter.Length)==&amp;quot;--&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailMessage = new MailMessage();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Length = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Append(streamReader.ReadLine());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Append(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Append(sTemp);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Append(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Read each part of a multipart message&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;mailHeader&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;bool ReadMessage(MailHeader mailHeader)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(mailHeader.messages==null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.messages = new ArrayList();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MailMessage mailMessage = new MailMessage();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string delimiter = &amp;quot;--&amp;quot; + mailHeader.boundary;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;StringBuilder sBody = new StringBuilder();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string sTemp = streamReader.ReadLine();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Append(sTemp);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool readHeder = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(true)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sTemp = streamReader.ReadLine();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(readHeder)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(sTemp.Length&amp;gt;0 &amp;amp;&amp;amp; sTemp[0]&amp;lt;=&amp;#39; &amp;#39;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Append(sTemp);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;continue;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;} &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string key = sBody.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Length = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(sTemp.Length==0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;readHeder=false;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Append(sTemp);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(key.StartsWith(&amp;quot;Content-Type: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailMessage.contentType = key.Remove(0,14);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;Content-Transfer-Encoding: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailMessage.contentTransferEncoding = key.Remove(0,27);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(sTemp.StartsWith(delimiter))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailMessage.message = sBody.ToString();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.messages.Add(mailMessage);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(sTemp.Remove(0,delimiter.Length)==&amp;quot;--&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailMessage = new MailMessage();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Length = 0;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Append(streamReader.ReadLine());&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;readHeder = true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Append(sTemp);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Append(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;bool SetMailHeader(MailHeader mailHeader, string key)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(key.StartsWith(&amp;quot;Received: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if (mailHeader.received==null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.received = key.Remove(0,10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if (mailHeader.received2==null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.received2 = key.Remove(0,10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if (mailHeader.received3==null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.received3 = key.Remove(0,10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;From: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.from = key.Remove(0,6);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;To: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.to = key.Remove(0,4);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;Subject: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.subject = key.Remove(0,9);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;Date: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.date = key.Remove(0,6);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;Message-ID: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.messageID = key.Remove(0,12);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;MIME-Version: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.mimeVersion = key.Remove(0,14);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;Content-Type: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int index = key.IndexOf(&amp;quot;boundary=&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.boundary = &amp;quot;&amp;quot;;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(index!=-1)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(key[index+9]==&amp;#39;\&amp;quot;&amp;#39;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;int index2 = key.IndexOf(&amp;quot;\&amp;quot;&amp;quot;,index+10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.boundary = key.Substring(index+10,index2-index-10); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;key = key.Substring(0,index);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.contentType = key.Remove(0,14);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;X-Priority: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.X_Priority = key.Remove(0,12);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;X-MSMail-Priority: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.X_MSMail_Priority = key.Remove(0,19);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;X-Mailer: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.X_Mailer = key.Remove(0,10);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;Importance: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.importance = key.Remove(0,12);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;X-MimeOLE: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.X_MimeOLE = key.Remove(0,11);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;X-RCPT-TO: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.X_RCPT_TO = key.Remove(0,11);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;X-UIDL: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.X_UIDL = key.Remove(0,8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(key.StartsWith(&amp;quot;Status: &amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.status = key.Remove(0,8);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return false;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return true;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Get all mails form the pop3 server.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;body&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// If set it returns mailheader and message.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public MailHeader[] GetMails(bool body)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string list = GetList();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(list==null || list.Length==0 || !list.StartsWith(&amp;quot;+OK&amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return null;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string[] param = list.Split(&amp;#39;\n&amp;#39;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string[] listHeader = param[0].Split(&amp;#39; &amp;#39;);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;int count = int.Parse(listHeader[1]);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MailHeader[] myHeader = new MailHeader[count];&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for (int n=0;n&amp;lt;count;n++)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{ &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string[] msg = param[n+1].Split(&amp;#39; &amp;#39;);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;myHeader[n] = GetMail(int.Parse(msg[0]),body);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return myHeader;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;public MailHeader GetMail(int num, bool body)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;MailHeader mailHeader = null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;try&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string sTemp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(body==true)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sTemp = SendCommand(&amp;quot;RETR &amp;quot; + num + &amp;quot;\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sTemp = SendCommand(&amp;quot;TOP &amp;quot; + num + &amp;quot;\r\n&amp;quot;);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(sTemp.StartsWith(&amp;quot;+OK&amp;quot;))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string []param = sTemp.Split(&amp;#39; &amp;#39;);&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;string delimiter = &amp;quot;--&amp;quot;;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader = new MailHeader();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.number = num;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;mailHeader.size = int.Parse(param[1]);&amp;nbsp; &lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;StringBuilder sBody = new StringBuilder();&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;while(true)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sTemp = streamReader.ReadLine();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(sTemp==&amp;quot;.&amp;quot;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// FIXME AL:&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;bool bRet = SetMailHeader(mailHeader,sBody.ToString()); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;/*if (bRet == false &amp;amp;&amp;amp; body == true)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ReadMessage(mailHeader);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;*/&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if(sTemp.Length&amp;gt;0 &amp;amp;&amp;amp; sTemp[0]&amp;lt;=&amp;#39; &amp;#39;)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Append(sTemp);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody.Append(&amp;quot;\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// Begin off message body&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if (sTemp.StartsWith(delimiter))&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// new Message&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ReadMessage(mailHeader);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else if (sTemp.Length == 0 &amp;amp;&amp;amp; body == true)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;ReadMessageBody(mailHeader);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(sBody.Length&amp;gt;0)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;SetMailHeader(mailHeader,sBody.ToString()); &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;delimiter = &amp;quot;--&amp;quot; + mailHeader.boundary; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;sBody = new StringBuilder(sTemp);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;// . - is the end of the server response&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;catch(Exception)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return null;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return mailHeader;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// If the POP3 server issues a positive response, then the&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// response given is multi-line.&amp;nbsp; After the initial +OK, the&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// POP3 server sends the message corresponding to the given&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// message-number, being careful to byte-stuff the termination&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// character (as with all multi-line responses).&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;num&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// a message-number (required) which may NOT refer to a&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// message marked as deleted&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/param&amp;gt; &lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Possible Responses:&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// +OK message follows&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// -ERR no such message&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string Retr(int num)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return GetCommandBlock(&amp;quot;RETR &amp;quot; + num + &amp;quot;\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// The POP3 server marks the message as deleted.&amp;nbsp; Any future&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// reference to the message-number associated with the message&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// in a POP3 command generates an error.&amp;nbsp; The POP3 server does&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// not actually delete the message until the POP3 session&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// enters the UPDATE state.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;num&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// a message-number (required) which may NOT refer to a &lt;br /&gt;&amp;nbsp;&amp;nbsp;/// message marked as deleted&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Possible Responses:&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// +OK message deleted&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// -ERR no such message&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string Dele(int num)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return SendCommand(&amp;quot;DELE &amp;quot; + num + &amp;quot;\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// The POP3 server does nothing, it merely replies with a&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// positive response.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Possible Responses:&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// +OK&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string GetNoop()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return SendCommand(&amp;quot;NOOP\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// If any messages have been marked as deleted by the POP3&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// server, they are unmarked.&amp;nbsp; The POP3 server then replies&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Send RSET command to unmark all deleteting messages&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Possible Responses:&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// +OK&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string Rset()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return SendCommand(&amp;quot;RSET\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// The POP3 server removes all messages marked as deleted&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// from the maildrop and replies as to the status of this&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// operation.&amp;nbsp; If there is an error, such as a resource&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// shortage, encountered while removing messages, the&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// maildrop may result in having some or none of the messages&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// marked as deleted be removed.&amp;nbsp; In no case may the server&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// remove any messages not marked as deleted.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Whether the removal was successful or not, the server&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// then releases any exclusive-access lock on the maildrop&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// and closes the TCP connection.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Possible Responses:&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// +OK&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// -ERR some deleted messages not removed&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string Quit()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if( netStream==null || streamReader==null)&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return (&amp;quot;-ERR no connection&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;string tmp = SendCommand(&amp;quot;QUIT\r\n&amp;quot;);;&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;netStream.Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;streamReader.Close();&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return tmp;&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// If the POP3 server issues a positive response, then the&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// response given is multi-line.&amp;nbsp; After the initial +OK, the&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// POP3 server sends the headers of the message, the blank&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// line separating the headers from the body, and then the&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// number of lines of the indicated message&amp;#39;s body, being&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// careful to byte-stuff the termination character (as with&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// all multi-line responses).&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Note that if the number of lines requested by the POP3&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// client is greater than than the number of lines in the&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// body, then the POP3 server sends the entire message.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;num_mess&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// a message-number (required) which may NOT refer to to a &lt;br /&gt;&amp;nbsp;&amp;nbsp;/// message marked as deleted, and&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;num_strok&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;///&amp;nbsp; a non-negative number of lines (required)&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Possible Responses: &lt;br /&gt;&amp;nbsp;&amp;nbsp;/// +OK top of message follows&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// -ERR no such message&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string GetTop(int num_mess, int num_strok)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return GetCommandBlock(&amp;quot;TOP &amp;quot; + num_mess + &amp;quot; &amp;quot; + num_strok + &amp;quot;\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;public string GetTop(int num)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return GetCommandBlock(&amp;quot;TOP &amp;quot;+ num + &amp;quot;\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// If an argument was given and the POP3 server issues a positive &lt;br /&gt;&amp;nbsp;&amp;nbsp;/// response with a line containing information for that message.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// This line is called a &amp;quot;unique-id listing&amp;quot; for that message.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// If no argument was given and the POP3 server issues a positive&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// response, then the response given is multi-line.&amp;nbsp; After the&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// initial +OK, for each message in the maildrop, the POP3 server&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// responds with a line containing information for that message.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// This line is called a &amp;quot;unique-id listing&amp;quot; for that message.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// In order to simplify parsing, all POP3 servers are required to&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// use a certain format for unique-id listings.&amp;nbsp; A unique-id&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// listing consists of the message-number of the message,&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// followed by a single space and the unique-id of the message.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// No information follows the unique-id in the unique-id listing. &lt;br /&gt;&amp;nbsp;&amp;nbsp;/// The unique-id of a message is an arbitrary server-determined&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// string, consisting of one to 70 characters in the range 0x21&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// to 0x7E, which uniquely identifies a message within a&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// maildrop and which persists across sessions.&amp;nbsp; This&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// persistence is required even if a session ends without&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// entering the UPDATE state.&amp;nbsp; The server should never reuse an&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// unique-id in a given maildrop, for as long as the entity&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// using the unique-id exists.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Note that messages marked as deleted are not listed.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// While it is generally preferable for server implementations&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// to store arbitrarily assigned unique-ids in the maildrop,&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// this specification is intended to permit unique-ids to be&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// calculated as a hash of the message.&amp;nbsp; Clients should be able&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// to handle a situation where two identical copies of a&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// message in a maildrop have the same unique-id.&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/summary&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;param name=&amp;quot;num&amp;quot;&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// a message-number (optional), which, if present, may NOT&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// refer to a message marked as deleted&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/param&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// Possible Responses:&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// +OK unique-id listing follows&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// -ERR no such message&lt;br /&gt;&amp;nbsp;&amp;nbsp;/// &amp;lt;/returns&amp;gt;&lt;br /&gt;&amp;nbsp;&amp;nbsp;public string GetUidl(int num)&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return SendCommand( &amp;quot;UIDL &amp;quot; + num + &amp;quot;\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;public string GetUidl()&lt;br /&gt;&amp;nbsp;&amp;nbsp;{&lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return GetCommandBlock(&amp;quot;UIDL\r\n&amp;quot;);&lt;br /&gt;&amp;nbsp;&amp;nbsp;}&lt;br /&gt;&amp;nbsp;}&lt;br /&gt;}&lt;br /&gt;&lt;/p&gt;
Posted from &lt;a href="http://weblogs.asp.net/albertpascual"&gt;http://weblogs.asp.net/albertpascual&lt;/a&gt;&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2562" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author></entry><entry><title>Giving away a free MSDN subscription to the community.</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/06/11/giving-away-a-free-msdn-subscription-to-the-community.aspx" /><id>http://alpascual.com/blog/al/archive/2008/06/11/giving-away-a-free-msdn-subscription-to-the-community.aspx</id><published>2008-06-12T01:54:00Z</published><updated>2008-06-12T01:54:00Z</updated><content type="html">&lt;p&gt;I got another free &lt;a href="http://msdn.microsoft.com/en-us/subscriptions/aa718657.aspx"&gt;MSDN subscription to give away&lt;/a&gt;, I gave one last night to the &lt;a href="http://iedotnetug.org/UG/"&gt;Inland Empire User Group&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;&lt;img src="http://msdn.microsoft.com/en-us/subscriptions/bb688001.TeamSuite1(en-us,MSDN.10).jpg" alt="" /&gt; &lt;/p&gt;  &lt;p&gt;How do I make sure to give it to the community? I thought that anybody reading my blog is part of the community. I want to make sure that goes to a person or community that can use it, if you want it, please send me an email or leave a comment and let me know how you going to use it. Do you have an open source project? Are you building an application for a organization to give back? Do you have installed GeoTwitter.NET on your blog? ;-) That gives you points as well. The gift is not for sale. I’ll be happy to send it to a school, another user group or students.&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Last night I &lt;a href="http://iedotnetug.org"&gt;went to the Inland Empire dot.net User Group, there were&lt;/a&gt; 37 enthusiastic people spending their night improving themselves. I must say, I haven’t seen that number of people on a user group in a very long time. &lt;/p&gt;  &lt;p&gt;There was, as well, a great presentation from Reza Madani – Business Intelligence with SQL Server 2008; “Reza&amp;#39;s presentation covered SQL Server Integration Services (SSIS), SQL Server Analysis Services (SSAS), and SQL Server Reporting Services (SSRS)”&lt;/p&gt;  &lt;p&gt;I was very tired, my bed time was overdue. I was shocked that they didn’t had any Internet connection, that challenge alone can be difficult to provide presentations to that user group. &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Still a great experience to see a community learning and involved. Its what is all about. Does not matter if you use the ASP.NET forums or a user group, its all the community that at the end of the day will help you improve your skills as a developer. &lt;/p&gt;  &lt;p&gt;&lt;em&gt;NOTE: All costs to send the MSDN subscription will be paid by me and the gift is provided by Microsoft. However I assume all taxes laws that may apply and I am responsible for any local, state or federal taxes in connection with any gratuities given. No cost for the recipient of the gift. Microsoft provided the gift to be to share with other individuals of my choosing in the &lt;strong&gt;community.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Cheers&lt;/p&gt;  &lt;p&gt;Al&lt;/p&gt;
Posted from &lt;a href="http://weblogs.asp.net/albertpascual"&gt;http://weblogs.asp.net/albertpascual&lt;/a&gt;&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2550" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author><category term=".Net" scheme="http://alpascual.com/blog/al/archive/tags/.Net/default.aspx" /><category term="ASP.NET" scheme="http://alpascual.com/blog/al/archive/tags/ASP.NET/default.aspx" /><category term="MSDN" scheme="http://alpascual.com/blog/al/archive/tags/MSDN/default.aspx" /></entry><entry><title>July 11th is the date for the new iPhone 3G and iPhone 2.0 upgrade.</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/06/09/july-11th-is-the-date-for-the-new-iphone-3g-and-iphone-2-0-upgrade.aspx" /><id>http://alpascual.com/blog/al/archive/2008/06/09/july-11th-is-the-date-for-the-new-iphone-3g-and-iphone-2-0-upgrade.aspx</id><published>2008-06-10T03:51:00Z</published><updated>2008-06-10T03:51:00Z</updated><content type="html">&lt;p&gt;Monday morning twitter was full of messages about iPhone 3G. The technology is here to get live streams to watch the announcement, yet google news, twitter and any real time microblogging was fast enough to bring the news to the people. No even Robert&amp;#160; Scoble that decided to hang out to an Apple Store, guessing to buy one of those shiny little supper phones called the iPhone 3G. He is been in the frontier of the news, with &lt;a href="http://qik.com/video/94944"&gt;chasing AT&amp;amp;T CTO around San Francisco&lt;/a&gt; to link every single news.&lt;/p&gt;  &lt;p&gt;Best streams out there for the WWDC were:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a title="" href="http://calilive.tv/"&gt;Cali Live TV&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="" href="http://www.macworld.com/article/133798/2008/06/wwdckeynote.html"&gt;Mac World .COM&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a title="" href="http://www.bwana.tv/live/"&gt;Bwana.TV&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;However the best was &lt;a title="" href="http://www.macrumorslive.com/"&gt;Mac Rumors Live&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;So what’s the price and the new features?&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;The iPhone 3G will be available July 11th in 22 countries. The maximum price around the world is $199 USD, $299 USD for the 16 GB&lt;/li&gt;    &lt;li&gt;GPS support now integrated into the iPhone.&lt;/li&gt;    &lt;li&gt;3G has a longer battery life. Still cannot be removed.&lt;/li&gt;    &lt;li&gt;Even thinner, black plastic back, solid metal buttons, same display, camera, flush headphone jack, and dramatically improved audio.&lt;/li&gt;    &lt;li&gt;Enterprise support.&lt;/li&gt;    &lt;li&gt;Third party application support.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Also iPhone 2.0 to upgrade your old iPhone will be a download for FREE for iPhone owners and $9,99 for iTouch owners.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;iPhone 2.0 will be available in early for July, no date set as yet.&lt;/li&gt;    &lt;li&gt;Contact search with live searching. Full iWork document support. Complete support for Office documents (Word, Excel, and now PowerPoint)&lt;/li&gt;    &lt;li&gt;Bulk delete &amp;amp; move for messages&lt;/li&gt;    &lt;li&gt;Ability to save images you get. New calculator with scientific mode when you rotate the iPhone and parental controls. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;I won’t be getting an iPhone 3G, my wife maybe when her contract with Verizon Wireless ends in August. I need to wait 1.5 years to get the new iPhone, maybe at that time the 4G is out ;-)&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Cheers&lt;/p&gt;  &lt;p&gt;Al&lt;/p&gt;  &lt;p&gt;&lt;a href="http://geotwitter.net"&gt;http://geotwitter.net&lt;/a&gt;&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2546" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author><category term="Blogging" scheme="http://alpascual.com/blog/al/archive/tags/Blogging/default.aspx" /><category term="iPhone" scheme="http://alpascual.com/blog/al/archive/tags/iPhone/default.aspx" /><category term="Apple" scheme="http://alpascual.com/blog/al/archive/tags/Apple/default.aspx" /><category term="iTunes" scheme="http://alpascual.com/blog/al/archive/tags/iTunes/default.aspx" /></entry><entry><title>Baby Smash review, family software for our geeky children.</title><link rel="alternate" type="text/html" href="http://alpascual.com/blog/al/archive/2008/06/07/baby-smash-review-family-software-for-our-geeky-children.aspx" /><id>http://alpascual.com/blog/al/archive/2008/06/07/baby-smash-review-family-software-for-our-geeky-children.aspx</id><published>2008-06-07T22:57:00Z</published><updated>2008-06-07T22:57:00Z</updated><content type="html">

&lt;p&gt;&lt;a href="http://hanselman.com/"&gt;Scott Hanselman&lt;/a&gt; wake up from a crazy dream like that movie “Jerry Maguire” and started writing software for young kids. That’s how &lt;a href="http://babysmash.com/"&gt;Baby Smash&lt;/a&gt; was born, an &lt;a href="http://www.codeplex.com/babysmash"&gt;open source application&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Its a very simple, yet full of potential, application build using WPF. Where the kids can type the keyboard and the sound of the letter or different laughter will come out of the speakers as well as the letter pressed will be displayed on the screen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://alpascual.com/blogs/al/WindowsLiveWriter/Familypictures.Thecircleiscomplete_7555/photo%5B1%5D_2.jpg"&gt;&lt;img title="photo[1]" style="BORDER-TOP-WIDTH:0px;BORDER-LEFT-WIDTH:0px;BORDER-BOTTOM-WIDTH:0px;BORDER-RIGHT-WIDTH:0px;" height="184" alt="photo[1]" src="http://alpascual.com/blogs/al/WindowsLiveWriter/Familypictures.Thecircleiscomplete_7555/photo%5B1%5D_thumb.jpg" width="244" border="0" /&gt;&lt;/a&gt; &lt;/p&gt;
&lt;p&gt;My almost 5 years old daughter enjoys the application, however she gets bored after a few minutes, yet my 2 years old daughter could play for several minutes until the keyboard keys come out!&lt;/p&gt;
&lt;p&gt;I have been adding a few features that will be ready soon for them to enjoy!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Include my own voice per letter with something funny in each!&lt;/li&gt;
&lt;li&gt;Ask the kid to type a letter and check if she input the right key.&lt;/li&gt;&lt;/ul&gt;
&lt;p&gt;Talking about family, we just got our new baby pictures for Ryan Michelle Pascual. &lt;a href="http://tlcphotography.typepad.com/"&gt;Geanette Trumbull&lt;/a&gt; has been our family photographer for years. So as a new baby arrived so did her camera. &lt;/p&gt;
&lt;p&gt;&lt;img src="http://tlcphotography.typepad.com/my_weblog/images/2008/06/03/img_7417_2.jpg" alt="" /&gt; &lt;/p&gt;
&lt;p&gt;All my girls! &lt;/p&gt;
&lt;p&gt;&lt;img src="http://tlcphotography.typepad.com/my_weblog/images/2008/06/03/img_7572.jpg" alt="" /&gt;&lt;/p&gt;
&lt;p&gt;Without any doubt, Baby Smash is a great open source initiative to explore and extend.&lt;/p&gt;
&lt;p&gt;Cheers&lt;/p&gt;
&lt;p&gt;Al&lt;/p&gt;&lt;img src="http://alpascual.com/aggbug.aspx?PostID=2545" width="1" height="1"&gt;</content><author><name>albert</name><uri>http://alpascual.com/members/albert.aspx</uri></author><category term=".Net" scheme="http://alpascual.com/blog/al/archive/tags/.Net/default.aspx" /><category term="Scott Hanselman" scheme="http://alpascual.com/blog/al/archive/tags/Scott+Hanselman/default.aspx" /><category term="WPF" scheme="http://alpascual.com/blog/al/archive/tags/WPF/default.aspx" /></entry></feed>