2009-06-16 6 views
0

Je suis en train de lire un compte gmail pour obtenir des données GPS qui est envoyé là-bas (dans le texte d'un e-mail) à partir d'un téléphone Moble (mon téléphone)erreur en utilisant C# mail.dll

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"); 
      } 

mais je reçois une exception sur le « get premier courrier de message de boîte aux lettres

"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)"} 

Idéalement ce que je voudrais faire est d'ouvrir cette lecture tous les nouveaux e-mails non lus dans ce compte pour une certaine ligne de sujet, puis lire la données dans le corps et les marquer comme lus

personne ne sait pourquoi sa moindre erreur

que quelqu'un a une experince avec le courrier C# que hey pourrait me diriger dans la bonne direction pour la lecture et des e-mails makring comme lu etc

Répondre

1
 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--; 
      } 

     } 
+0

Vous devriez probablement faire un total long (pas int), et se débarrasser de Convert.ToInt16. – SLaks

2

Il est impossible de marquer des e-mails comme lu en utilisant le protocole POP.

Essayez d'utiliser IMAP.

+0

Êtes-vous sûr? comment les perspectives le font-elles via pop3? – Crash893

+0

avez-vous un client imap gratuit et facile à utiliser? – Crash893

+0

Outlook ne le fait pas via POP3. Lorsque vous marquez un message comme lu dans Outlook, il met à jour une base de données locale. La seule interaction entre Outlook et le serveur POP consiste à télécharger le message en premier lieu. – SLaks

0

Je n'ai pas d'expérience avec C# Mail, et cette réponse ne peut pas aider, mais j'ai déjà vécu l'étrangeté dans le passé tout en essayant d'écrire le code d'envoi/réception de courrier électronique. Il s'est avéré que le logiciel antivirus que nous utilisions fonctionnait avec une liste blanche de fichiers .EXE autorisés pouvant générer des connexions POP3 ou SMTP entrantes/sortantes. Une chance c'est ton problème?

Questions connexes