Wie automatisieren Sie das Senden von E-Mails, wenn eine bestimmte Nachricht empfangen wird?

478
Sebastian

Ich verwende die Buxfer.com- App für das Geldmanagement. Mit diesem Dienst können Sie Ausgaben melden, indem Sie eine E-Mail an eine spezielle private E-Mail-Adresse senden, die der Benutzer von Buxfer zugewiesen hat.

Das Format, das erforderlich ist, um Ausgaben, Einnahmen oder Überweisungen zu melden, ist:

<description> [+]<amount> [tags:<tags>] [acct:<account>] [from:<account>] [to:<account>] [date:<date>] [status:<status>] [memo:<memo>] 

Elemente in eckigen Klammern sind optional. Text kann geschrieben werden in Titelfeld oder in Nachrichteninhalt.

Beispiele:

Kaffee 5,45

Das einfachste Beispiel mit minimalen Informationen, die zur Bearbeitung der Anfrage erforderlich sind. Kosten: 5,45 vom Standardkonto, Beschreibung: "Kaffee".

Kaffee 5,45 tags: Getränke, Kaffee acct: Amex

Kosten: 5,45 für Kaffee vom Konto „Amex“, angehängte Tags: „Getränke“ und „Kaffee“

Gehaltsscheck +6952.32 Status: ausstehend

Einkommen: ein Gehaltsscheck von 6952.32. Der Scheck ist noch zu löschen

Abhebung am Geldautomaten 200 von: BoA Überprüfung an: Bargeld

Überweisung: 200 von einem Bank of America-Geldautomaten in die Brieftasche zurückgezogen

Nach jeder Transaktion erhalte ich eine E-Mail-Benachrichtigung von der Bank. Die Beispiel-E-Mail sieht folgendermaßen aus:

from: info@equabank.cz to: [myemail]@gmail.com topic: Payment card transaction 

Sehr geehrter Herr [Nachname],

Am 05.11.2017 um 10:08 Uhr wurde eine Transaktion mit Ihrer Zahlungskarte in Höhe von 536,80 CZK durchgeführt. Zahlungsdetails: KOSIK RETAIL SRO> PRAHA 9 CZ.

Weitere Informationen erhalten Sie in Ihrem Internetbanking.

Equa Bank


[...]

Ich suche nach einer Lösung, um eingehende E-Mails automatisch zu verarbeiten, die Informationen zur Transaktion zu lesen und E-Mails an eine vordefinierte Adresse von Buxfer zu senden.

Die gewünschte Ausgabe in diesem Beispiel lautet:

from: [myemail]@gmail.com to: [privateemail]@buxfer.com topic: KOSIK RETAIL S.R.O.>PRAHA 9 CZ 536.80 

Meine verfügbare Hardware ist:

  • Notebook mit Windows 10,
  • RaspberryPi 3B mit Ubuntu Mate 16.04 LTS,
  • Smartphone mit Android 7.1.2 (AOSP Extended 4.6)

Ich habe dies mit Filterregeln in Gmail und Thunderbird versucht. Zusatz zu Thunderbird zu finden, der das tun könnte; Durchsucht das Internet nach geeigneter Software, aber ich habe nur Tools für den Massenversand von E-Mails, das Weiterleiten von E-Mails oder automatische Antworten gefunden.

0

3 Antworten auf die Frage

2
Sebastian

IFTTT und ähnliche webbasierte Dienste für die Online-Automatisierung und -Integration können zur Automatisierung dieses Prozesses verwendet werden. Die IFTTT-Plattform bietet eine breite Palette verfügbarer Dienste mit der Möglichkeit, Aktionen in JavaScript ( technisch TypeScript ) in "Filtercode" anzupassen, der nach dem Trigger ("if") und vor der Aktion ("then") ausgeführt wird. Es ist jedoch erforderlich, eigenen zu erstellen Applet.

Als Auslöser wählte ich den Google Mail-Dienst und wählte Neue E-Mail im Posteingang unter "info@equabank.cz" aus.

Als Aktion wählte ich erneut Gmail und wählte "E-Mail senden" an die Buxfer-Konto-E-Mail und konfigurierte folgende Felder:

  • Betreff: {}
  • Körper: {}

Nach dem Hinzufügen der Aktion war es möglich, Filtercode zu schreiben, mit dem der Betrag mit der Beschreibung aus der E-Mail-Nachricht abgerufen und in der erforderlichen Weise (Beschreibung, Speicherplatz, Betrag) formatiert werden konnte. Sonderzeichen mussten entfernt werden, da sie in gesendeten E-Mails in HTML-Symbole umgewandelt wurden. Allerdings hat Buxfer eingehende E-Mails als Klartext analysiert und das Semikolon (;) am Ende eines Sonderzeichens als Beginn einer neuen Transaktion gemäß " Dokumentation " behandelt:

Sie können mehrere Ausgaben in einer einzelnen Nachricht senden, indem Sie sie in eine separate Zeile eingeben oder sie durch ein Semikolon (;) trennen.

if (Gmail.newEmailFrom.Subject === "Payment card transaction") { var body = Gmail.newEmailFrom.BodyPlain; var lines = body.split("\n\n"); var targetLine = lines[1]; var words = lines[1].split(" "); var amount = words[16]; var description = targetLine.substring( targetLine.lastIndexOf("Payment detail: ") + 16 );  description = description.replace(/[^\w\s:]/gi, ' '); var targetBody = description + amount;  Gmail.sendAnEmail.setBody(targetBody); } else if (Gmail.newEmailFrom.Subject === "Incoming payment to your account") { ... } else if (Gmail.newEmailFrom.Subject === "Outgoing payment from your account") { ... } else { Gmail.sendAnEmail.skip() } 

Diese Lösung funktioniert derzeit gut mit Zahlungskartentransaktionen. Die Überwachung eingehender Zahlungen würde die Bearbeitung mehrerer Konten erfordern. Ausgehende Zahlungen müssten das Problem mit Rechnungskartenzahlungen lösen.

0
Claude Frantz

Ich kann auf Unix antworten, hier Ubuntu.

Sie benötigen einen lokalen MTA (Mail Transfer Agent) wie "sendmail", der in der erforderlichen Weise konfiguriert ist, insbesondere hinsichtlich der zu verwendenden sicheren Protokolle und der Authentifizierung bei der Gegenstelle. Dann müssen Sie die Nachricht zum Senden mit einem einfachen Texteditor oder einem anderen Tool erstellen, das einfachen Text erzeugen kann. Sobald Ihre Nachricht erstellt wurde, können Sie sie einfach an "sendmail" senden, die sie an den Empfänger sendet. Bei entsprechender Konfiguration kann "sendmail" die gesamte Authentifizierung durchführen.

Um die eingehenden Nachrichten zu verarbeiten, können Sie "fetchmail" installieren und konfigurieren, mit dem die Nachrichten mithilfe des entsprechenden Protokolls vom Remote-Server abgerufen werden können. In Anbetracht dessen, dass Sie wahrscheinlich zahlreiche Nachrichten erhalten werden, die nicht nur mit diesem Zahlungssystem zusammenhängen, müssen Sie die eingehenden Nachrichten filtern. "procmail" ist wahrscheinlich ein gutes Werkzeug, um Sie bei dieser Aufgabe zu unterstützen.

Ich gestehe, dass die Konfiguration dieses Tools nicht auf dem Anfängerlevel liegt.

Vielen Dank, dass Sie mir Linux-Tools empfohlen haben. Ich werde versuchen, sie näher anzusehen, aber ich sehe immer noch nicht die Möglichkeit, fetchmail und sendmail miteinander zu verbinden. Ich meine: wie man Informationen aus eingehenden E-Mails erhält, bringt sie in korrekt formatierten Text und übergeben Sie es an sendmail Sebastian vor 6 Jahren 0
In der üblichen Art und Weise sendet fetchmail eingehende Nachrichten an sendmail, um sie an die lokalen Postfächer zu übermitteln. Claude Frantz vor 6 Jahren 0
In der üblichen Art und Weise sendet fetchmail eingehende Nachrichten an sendmail, um sie an die lokalen Postfächer zu übermitteln. Die zu sendende Nachricht sollte ein From :, ein To :, ein Betreff: und dann eine leere Zeile sowie die darin enthaltenen Nachrichten enthalten. Verwenden Sie schließlich "sendmail -G -t <Nachrichtendatei", um die Nachricht an sendmail zu senden. Claude Frantz vor 6 Jahren 0
-1
HelpBox

Sie benötigen einen POP / IMAP-Server auf Ihrem Mail-Server, damit Sie E-Mails auf Ihrem lokalen Computer empfangen können. Auf einem Linux-Rechner empfehle ich Dovecot. Um die Operation zu automatisieren, erledigt fetchmail den Rest.