Pregunta

Estoy intentando leer en una cuenta de gmail para obtener datos gps que se envían allí (en el texto de un correo electrónico) desde un teléfono móvil (mi teléfono)

using (Pop3Client cl = new Pop3Client())
            {
                cl.UserName = "crash893";
                cl.Password = "password";
                cl.ServerName = "pop.gmail.com";
                cl.AuthenticateMode = Pop3AuthenticateMode.Pop;
                cl.Ssl = true;
                cl.Authenticate();
                ///Get first mail of my mailbox
                Pop3Message mg = cl.GetMessage(1);  <<<<<<<<<< ERROR
                String MyText = mg.BodyText;
                ///If the message have one attachment
                Pop3Content ct = mg.Contents[0];
                ///you can save it to local disk
                ct.DecodeData("c:\\test.txt");
            }

pero obtengo una excepción en el mensaje " obtener el primer correo del buzón

"Higuchi.Net.Pop3.Pop3ConnectException: Pop3 connection is closed
at Higuchi.Net.Pop3.Pop3Client.SendCommand(String inCommand)
at Higuchi.Net.Pop3.Pop3Client.Execute(String inCommand, Boolean inIsMultiLine)
at Higuchi.Net.Pop3.Pop3Client.Execute(Pop3Command inCommand)
at Higuchi.Net.Pop3.Pop3Client.GetMessage(Int64 inMailIndex)"}

Idealmente, lo que me gustaría hacer es abrir esto, leer todos los nuevos correos electrónicos no leídos en esta cuenta para una línea de asunto determinada, luego leer los datos en el cuerpo y marcarlos como leídos

¿Alguien sabe por qué está fallando?

¿Alguien tiene alguna experiencia con el correo de C # que me podría orientar en la dirección correcta para leer y preparar correos electrónicos como leídos, etc.?

¿Fue útil?

Solución 3

        using (Pop3Client cl = new Pop3Client())
        {
            cl.UserName = "ewgsdssw";
            cl.Password = "sdgwsegw";
            cl.ServerName = "pop.gmail.com";
            cl.AuthenticateMode = Pop3AuthenticateMode.Pop;
            cl.Port = 995;
            cl.Ssl = true;
            cl.Authenticate();
            ///Get first mail of my mailbox
            ///
            int total = Convert.ToInt16(cl.GetTotalMessageCount());

            while (total >= 1)
            {
                Pop3Message mg = cl.GetMessage(total);
                if (mg.Subject == "I am Here")
                {

                    // http://maps.google.com/maps?q=38.89552,-77.43265
                    //(+/- 76 metres.)

                    string location = mg.BodyText;
                    location = location.Replace("http://maps.google.com/maps?q=","~");
                    location = location.Replace("metres.)\r\n\r\n","~");

                    location = location.Split('~')[1];

                    location = location.Replace("(+/- ", ",");
                    location = location.Replace("\r\n", "");


                    string[] data = location.Split(',');
                    string lat = data[0];
                    string lon = data[1];
                    string res = data[2];
                    DateTime time = mg.Date;

                    textBox1.AppendText(string.Format("Lat: {0} LON: {1} Res: {2} TIME: {3}\r\n",lat,lon,res,time.ToString()));

                }

                total--;
            }

        }

Otros consejos

No es posible marcar los correos electrónicos como leídos usando el protocolo POP.

Prueba a usar IMAP.

cl.Port = 995;

No tengo experiencia con C # Mail y es posible que esta respuesta no sea de ayuda, pero en el pasado experimenté rarezas al intentar escribir el código relacionado de envío / recepción de correo electrónico.

Resultó que el software antivirus que estábamos ejecutando en el trabajo tenía una lista blanca de .EXE permitidos que podían hacer conexiones POP3 o SMTP de entrada / salida. ¿Alguna posibilidad de que este sea tu problema?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top