1

この C# コードに問題はありますか? gmail からメール通知を取得し、CMD に待機中の未読メールの数を出力します。

Unread Mails: 10
Unread Mails: 10

次に、シリアル経由で何通のメールを送信しますか。しかし、「未読メール:」と2回言った後、次のようになります:

Operation Timed Out.
Unread Mails: 0

と繰り返します。

私はこれをさまざまなコンピューターと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;
    }

}

}

4

1 に答える 1

0

まあ、私はそれを修正したようです。テストのために10秒ごとにループしていたので、5分にしました。私のニーズでは、5 分の方が現実的です。

于 2011-08-27T03:05:10.747 に答える