2013-07-15 9 views
6

Ich habe den folgenden Code holen zu einem Posteingang von einem Mail-Server verbinden:Gmail Mails von Gesendete Objekte als auch

Store popStore = popSession.getStore("pop3"); 
popStore.connect(address, userName, password); 
Folder inboxFolder = popStore.getFolder("Inbox"); 

Post this i für neue E-Mails zu überprüfen. Wenn ich jetzt eine Verbindung mit Google Mail herstelle, erhalte ich auch E-Mails von Gesendeten Objekten, wenn sie eigentlich nur aus dem Ordner "Posteingang" stammen sollen. Mit Yahoo funktioniert das gut.

Irgendeine Idee, was dieses Problem in Gmail verursachen kann?

Edit: Ich habe auch mit INBOX versucht, und das Ergebnis ist das gleiche

+0

versuchen Sie "INBOX" .. und ich denke, die Elemente, die Sie beziehen sich auf "Gesendete Mail" möglicherweise Antworten von den Empfängern, die auch die gleiche Betreffzeile mit einem vorhergehenden "RE:" .. – Dreamer

+0

wird versuchen mit Posteingang. Und nein, ich hatte über das von Ihnen beschriebene Szenario verifiziert, indem ich neue E-Mails mit eindeutigen Betreffzeilen aus dem Konto, das ich heruntergeladen habe, gesendet habe: – rajesh

+0

@rajesh: Zeigen Sie den echten Code? Warum nicht mehr (nicht) funktionierendes Beispiel einfügen? – Jayan

Antwort

4

einen Code-Schnipsel ist geschützt. Bei der Überprüfung mit Google Mail gibt es keine Überschneidungen zwischen Posteingang und gesendeter E-Mail. (Dies sollte ein Kommentar gewesen sein, die Entsendung als Antwort für die Formatierung)

javax.mail.Folder[] folders = store.getDefaultFolder().list("*"); 
for (javax.mail.Folder folder : folders) { 
    if ((folder.getType() & javax.mail.Folder.HOLDS_MESSAGES) != 0) { 
     if (folder.getFullName().equalsIgnoreCase("[Gmail]/Sent Mail") 
       || folder.getFullName().equalsIgnoreCase("Inbox")) { 
      System.out.println(folder.getFullName() + ": " + folder.getMessageCount()); 
      folder.open(Folder.READ_ONLY); 
      for (Message m : folder.getMessages(
           folder.getMessageCount() - 5, 
           folder.getMessageCount())) { 
       System.out.println("m.getSubject() = " + m.getSubject()); 
      } 
      folder.close(true); 
     } 
    } 
} 
+0

'for (Nachricht m: folder.getMessages (folder.getMessageCount() - 5, folder.getMessageCount()))' Suchen Sie nur nach 5 Nachrichten? – rajesh

3

zunächst versuchen, diese

Folder folder = store.getDefaultFolder(); 
folder = folder.getFolder("INBOX"); 
folder.open(Folder.READ_WRITE); 
3

Interessante Frage. Ich habe ein wenig Forschung und fand this post, in denen Google sagt:

Wenn Sie POP aktivieren, werden alle Nachrichten heruntergeladen auf Ihren Client, mit Ausnahme von Spam, Papierkorb und Chats. Wenn Sie nicht möchten, dass Nachrichten, die Sie von der Webschnittstelle an den Posteingang Ihres E-Mail-Clients senden, gesendet werden, empfehlen wir, einen Filter in Ihrem Client zu erstellen.

Um einen Filter nach dem Absender zu erstellen, können Sie dies tun:

String filter = "Not([SenderEmailAddress] = '[email protected]')"; 
Items inboxItems = inboxFolder.Items.Restrict(filter); 

wo [email protected] Adresse Ihre E-Mail ist. Dieser Filter gibt Ihnen nur die Elemente, die von jemand anderem als Ihnen selbst gesendet werden. Darüber hinaus kann die Restrict Methode durch Find ersetzt werden, aber Restrict wird viel schneller für größere Datensätze sein.

+1

Interessanter Fund. Aber ich glaube, dass diese Kennzeichnung nur für Mails erfolgt, auf die ich geantwortet habe. Es gibt einige Mails, die neu zusammengestellt sind. Sie haben nicht die Inbox-Kennzeichnung – rajesh

+0

Egal, wenn eine von Ihnen gesendete E-Mail die 'Inbox'-Bezeichnung hat, wird dieser Filter es beheben. Ich glaube, dass dies darauf zurückzuführen ist, wie Google die Konversationsansicht von E-Mails behandelt. –

+0

Aber mein Problem ist mit E-Mails ohne Posteingang Etiketten. Bitte sehen Sie meinen Kommentar zu Armaans Antwort unter – rajesh

2

Wenn Sie per E-Mail mit Antwort oder Antwort auf alle in Gmail kommunizieren, wird es als Posteingang Mail angesehen. Weil es Konversationsansicht ist. so dass Ihre gesendete Mail auch eine Posteingang Mail ist. damit du diese Mails in deinen Nachrichten bekommst.

Lesen Sie this offizielle Google-Antwort.

+0

Aber ich bekomme Probleme in einer neu zusammengesetzten Nachrichten als auch Antworten – rajesh

+0

Wenn Sie eine Nachricht verfassen , und der Empfänger antwortet auf diese Nachricht, dann würde Google Ihre ursprüngliche Nachricht in den Posteingang für die Konversationsansicht verschieben.Ich bin mir nicht sicher, warum Sie dies auf einer neuen Nachricht * ohne * eine Antwort sehen würden. –

+0

Es gibt noch keine Empfängerantworten für diese und keine Inbox-Kennzeichnung.Ich hatte diese Szenarien, die ich verstehe, aber es gibt ein Problem, wenn die E-Mail neu zusammengesetzt und gesendet wird und nicht zurück t beantwortet wird O – rajesh

Verwandte Themen