Frage

Habe gerade eine Anfrage von meinem Chef für eine Anwendung, an der ich arbeite.Im Grunde bekommen wir eine E-Mail-Adresse ein setup für einen externen client zum senden von excel-Dateien um.

Was ich brauche, ist ein Weg, um automatisch abholen alle E-Mails an diese Adresse, so kann ich die Anlage, Prozess und speichern Sie Sie auf einem Ordner.

Alle Informationen, auch dort, wo zu beginnen wäre hilfreich sein.\

Hinweis:Wir sind mit einem lotus notes-server, um dies zu tun, aber eine generische Art und Weise würde werden mehr hilfreich sein (Wenn möglich).

War es hilfreich?

Lösung

E-Mail -> Mail-Server -> [etwas]. -> Datei-Scheibe

Datei auf der Festplatte ist ziemlich einfach zu analysieren, verwenden Sie Java Mail .

Die [etwas] könnte sein:

Andere Tipps

Edit: , seit ich diese Antwort schrieb, hat Weiser bewegt und behauptet nun, nur eine Einheit Test-Tool zu sein, so nehmen Sie die Antwort unten mit einer Prise Salz ...


Svrist Antwort ist gut, aber wenn Sie wollen seinen mittleren Stufe (der Mail-Server, der die E-Mail auf die Festplatte zur späteren Abholung durch das Java-System schreibt) zu vermeiden, die Sie verwenden können Weiser .

Weiser können Sie einen in-Java Mail-Server starten:

Wiser wiser = new Wiser();
wiser.setPort(2500);
wiser.start();

Dann können Sie es einfach abfragen regelmäßig für E-Mail:

for (WiserMessage message : wiser.getMessages())
{
    String envelopeSender = message.getEnvelopeSender();
    String envelopeReceiver = message.getEnvelopeReceiver();

    MimeMessage mess = message.getMimeMessage();

    // mail processing goes here
}

Verwenden Sie eine E-Mail in der Datenbank (Domino-Administrator kann das für Sie einrichten, aber es ist in der Hilfedatei als auch).

In dieser Datenbank können Sie einen Agenten erstellen, die regelmäßig alle neuen Dokumente zu verarbeiten läuft. Das Mittel wird die EmbeddedObjects Eigenschaft der NotesRichTextItem Klasse und die ExtractFile Methode der Notesembeddedobject-Klasse verwenden, um einen Griff auf dem Dateianhang zu erhalten und es an den Ort extrahieren Sie angeben.

Zum Beispiel, dieses Skript durchläuft alle Dateianlagen, Objektverknüpfungen und eingebettete Objekte im Körper Elemente eines Dokuments. Jedes Mal ist es eine Dateianlage findet, löst die Datei in das Verzeichnis SAMPLES auf dem Laufwerk C und entfernt die Anlage aus dem Dokument

Dim doc As NotesDocument
Dim rtitem As Variant
'...set value of doc...
Set rtitem = doc.GetFirstItem( "Body" )
If ( rtitem.Type = RICHTEXT ) Then
  Forall o In rtitem.EmbeddedObjects
    If ( o.Type = EMBED_ATTACHMENT ) Then
      Call o.ExtractFile( "c:\samples\" & o.Source )
      Call o.Remove
      Call doc.Save( False, True )
    End If
  End Forall
End If

Ich habe ziemlich viel in letzter Zeit mit Java-Agenten auf Domino Servern. Der Domino 8.5 Server unterstützt Java 6 und dessen eingebettet, so dass es jemand nicht mit ein bisschen Domino-Entwicklung Erfahrung nehmen lange einen Agenten zusammen, die ausgeführt wird, wenn neue E-Mail eintrifft. In LotusScript- seine noch einfacher, aber das braucht mehr spezielle Fähigkeiten, die Sie wahrscheinlich einen Auftragnehmer in bereitzustellen bekommen müssen.

Die Begrenzung Ihr wahrscheinlich Bedenken Sie die extrahierte Datei zu begegnen, können Sie legen Sie es einfach auf die Dateistruktur der Domino-Server, aber Sie können von Platzierung auf einem anderen Server es durch die OS-Sicherheits begrenzt werden.

Lotus Notes / Domino speichert Mail in einer Notes-Datenbank. Es gibt APIs für immer Dokumente (E-Mails), Feldwerte Lesen (Von, Betreff) und Lösen Dateien.

APIs enthalten

-LotusScript (VB Variante innerhalb der Notes-Datenbank)

-Java (von innerhalb oder außerhalb der Datenbank)

-C API (extern)

-Gleicher API verfügbar über COM-Server

Sie können einen „periodischer Agent“ in der Datenbank (mit LotusScript- oder Java) erstellen, die erstellten Dokumente finden können, da sie zuletzt die Anlagen liefen, suchen und extrahieren Sie sie. Das Mittel muß mit einer ID unterzeichnet werden, die die entsprechenden Berechtigungen auf dem Server verfügt, einschließlich der erforderlich ist, um das Dateisystem zu schreiben und alle anderen Prozesse initiieren.

Externe auf die Datenbank können Sie jede API außer LotusScript- verwenden, um den Server / Mail-Datenbank zur Anmeldung in und folgen einem ähnliches Verfahren, z.B. Extrahieren Sie die Dateien lokal auf einem Client oder separaten Server. C-API und COM erfordern ein Notes-Client installieren, aber Java-Anwendungen können über CORBA / DIIOP ohne vollständige Installation.

gesetzt werden bis laufen

Lesen Sie die Domino Designer-Hilfe (oder IBMs Website für C API) für weitere Informationen.

In Bezug auf eine „generische Art und Weise“, dies zu tun, wenn Sie Daten in Notes zugreifen und benötigen Anhänge zu extrahieren, glaube ich, diese APIs sind die beste Wahl. Wenn Sie die Anwendung auf einen anderen Mail-System Envision portieren, sollten Sie die API-Routinen über eine „Schnittstelle“ entkoppeln, so dass Sie nur eine neue Implementierung dieser Schnittstelle hinzufügen müssen ein neues Mail-System zu unterstützen.

Sie können die Notes-Dokumente zugreifen relativ leicht DIIOP verwenden, würde die C Api Straße viel einfacher als going down ...

Versuchen POP3Client im Net Commons Paket ; es wird an Ihrem Java-Programm-Check für neue E-Mails für ein bestimmtes Konto lassen, was auch immer Sie wollen Intervall (alle paar Minuten? stündlich?) und erhalten / Nachrichten löschen, wie gewünscht.

SMTP / POP3 kann auf dem Domino-Server aktiviert werden. Arbeitete mit diesem vor und Squirrelmail mit ihm laufen bekommen. SMTP ist ein wenig ressourcenintensiv, aber die Mühe lohnt sich, denn dann muss man nicht in Lotusland absteigen, um Dinge zu arbeiten. Schreiben Sie einfach ein kleines Java-CLI-Programm, das eine bestimmte E-Mail-Box (POP3 oder SMTP) prüft und analysiert durch die Nachrichten, die Anlagen ziehen und sie platzieren, wo nötig.

Viel Dokumentation und Beispiele hier: http://java.sun.com/products/javamail/

Die Techniken, die Sie diesen Ansatz entwickeln nehmen mehr werden breit anwendbar in Ihrer beruflichen Zukunft als alles, was Lotus / Domino-spezifisch.

Egal, was Sie tun, werden Sie ein Verständnis für die Notes-Datenstrukturen Lotus benötigen. Die gute Nachricht ist, dass eine vollautomatische Lösung kann sehr einfach in Notes gebaut werden.

Ihre beste Wette ist es in den Hinweisen gebaut haben, und es kann bis laufen automatisch eingestellt werden, wenn neue E-Mail empfangen wird. Gary Antwort ist tot, aber ohne Erfahrung, wäre es wahrscheinlich schwierig sein, herauszufinden, wie es selbst zu implementieren. Auf der anderen Seite, es sollte wirklich nicht nehmen alle zuständigen Hinweise mehr als eine Stunde Programmierer oder zwei um es einzurichten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top