2016-04-07 15 views
1

Gibt es Beschränkungen, wie viele gleichzeitige Clients Sie mit einem E-Mail-Konto verbinden können?MailKit und mehrere Clients auf demselben E-Mail-Konto

Ich habe eine App, die bei jeder Anfrage einen neuen ImapClient öffnet. Der ImapClient öffnet INBOX und FolderA und verschiebt eine Mail nach UID von einem zum anderen. Die mehreren Clients greifen niemals gleichzeitig auf die gleiche Mail zu, sondern verschieben wahrscheinlich mehrere Mails gleichzeitig auf demselben Konto.

Fehler scheint zu auftreten, sobald ich über 5 + Clients simultan, mit Exchange und Antwort mit vielen verschiedenen Fehlern wie folgt traf: "Der IMAP-Server antwortete auf den Befehl 'COPY' mit einer 'NO' Antwort." "Der IMAP-Server hat den Befehl 'EXPUNGE' mit einer 'NEIN' Antwort beantwortet."

Wenn ich Mails bin bewegt ich folgende Sequenz haben:

  1. neues ImapClient Mit
  2. Connect und Auth den Client
  3. GetFolderAsync von INBOX und FolderA, dann warten auf die Antwort
  4. Öffnen Sie die INBOX mit OpenSync() mit ReadWrite und warten Sie auf die Aufgabe.
  5. Fetch INBOX mit FetchAsync() durch das Ergebnis Looping die gewünschte UID zu finden, basierend auf MessageID
  6. Aufruf moveToAsync() Bewegen des Mail basierend auf uid zum FolderA und
  7. FolderA.SetFlagAsync() wartet mit neue UID, und das Markieren der Mail GESEHEN mit
  8. auf warten 6. & 7.
  9. INBOX.SetFlagAsync() mit der vorherigen UID und die E-Mail mit DELETED Beflaggung,
  10. Closing IMAP-Ordner für den Betrieb warten mit INBOX.CloseAsync und FolderA.CloseAsync

Antwort

2

Es gibt keinen Standard, der die maximale Anzahl von Clients definiert, die ein IMAP-Server zulässt. Ich habe gelesen, dass Thunderbird maximal 5 gleichzeitige Verbindungen verwendet (was wahrscheinlich darauf hindeutet, dass sie für die meisten IMAP-Server in der freien Wildbahn gut funktionierten), so dass Sie möglicherweise erklären können, was Sie sehen.

+0

Tatsächlich einige weitere Untersuchungen gezeigt, dass MailKit kein Problem hatte, wie 15 asynchrone Verbindungen zu erstellen (Verbindung, Authentifizierung, Auswahl von INBOX und FolderA) und sogar Posteingang für alle 15 Verbindungen abrufen. Aber sobald ich anfange, MoveTo() in der Reihenfolge aller 15 Verbindungen zu verwenden, und die E-Mail im vorherigen Ordner als gelöscht zu markieren, und wenn der Ordner dest im Posteingang ist, dann scheint es, wie ungesehen, Probleme mit zu geben Die Exchange antwortet mit NEIN zu COPY. Und im Protokoll des Imap-Protokolls sehe ich am Ende die folgende Zeile: "C: COPY 29,33 INBOX S: KEINE KOPIE ist fehlgeschlagen oder teilweise abgeschlossen." – grmihel

+0

Die Frage ist also, gibt es irgendwelche verbotenen oder gefährlichen Schritte in der Post-Sequenz bewegen in der ersten Frage geschrieben? – grmihel

+0

Hat ein anderer Client die gleichen Nachrichten verschoben? – jstedfast