2011-08-22 57 views
1

你们看到这个C#代码的任何问题吗?它从Gmail电子邮件通知,然后打印到CMD多少未读邮件正在等待:我的Gmail通知程序代码有什么问题?

Unread Mails: 10 
Unread Mails: 10 

,然后发送了多少邮件通过串行过。但在它说“未读邮件:”两次我得到:

Operation Timed Out. 
Unread Mails: 0 

它重复。

Iv'e在不同的计算机和互联网服务提供商(ISP)上试用过它,所以它在代码中是绝对的东西。 C#程序。我也曾尝试更改Thread.Sleep值,以便在再次执行此操作之前花费更长时间,但仍然无效。 谢谢!

public static void Main(string[] args) 
    { 
     try 
     { 
      SerialPort port = new SerialPort("COM1", 9600, Parity.None, 8, StopBits.One); 
      port.Open(); 

      string Unreadz = "0"; 
      while (true) 
      { 
       Unreadz = CheckMail(); 
       Console.WriteLine("Unread Mails: " + Unreadz); 
       if (Convert.ToInt32(Unreadz) < 10) port.Write("0" + Unreadz); 
       else port.Write("" + Unreadz); 

       System.Threading.Thread.Sleep(10000); 
      } 
     } catch (Exception ee) { Console.WriteLine(ee.Message); } 

    } 

    public static string TextToBase64(string sAscii) 
    { 
     System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding(); 
     byte[] bytes = encoding.GetBytes(sAscii); 
     return System.Convert.ToBase64String(bytes, 0, bytes.Length); 
    } 

    public static string CheckMail() 
    { 
     string result = "0"; 

     try 
     { 
      var url = @"https://gmail.google.com/gmail/feed/atom"; 
      var USER = "USER"; 
      var PASS = "PASS"; 

      var encoded = TextToBase64(USER + ":" + PASS); 

      var myWebRequest = HttpWebRequest.Create(url); 
      myWebRequest.Method = "POST"; 
      myWebRequest.ContentLength = 0; 
      myWebRequest.Headers.Add("Authorization", "Basic " + encoded); 

      var response = myWebRequest.GetResponse(); 
      var stream = response.GetResponseStream(); 

      XmlReader reader = XmlReader.Create(stream); 
      while (reader.Read()) 
       if (reader.NodeType == XmlNodeType.Element) 
        if (reader.Name == "fullcount") 
        { 
         result = reader.ReadElementContentAsString(); 
         return result; 
        } 
     } catch (Exception ee) { Console.WriteLine(ee.Message); } 
      return result; 
    } 

} 

}

回答

0

以及我似乎解决它。因为我只是每10秒循环测试一次,所以我把它放到了5分钟。 5分钟更符合我的需求。