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

0

ich benutze 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 im Titel Feld oder in der Nachricht Inhalt.

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: [email protected]
to: [myemail]@gmail.com
topic: Payment card transaction

Sehr geehrter Herr [Nachname],

Am 05.11.2017 um 10:08 Uhr wurde eine Zahlung für Ihre Zahlung durchgeführt   Karte in Höhe von 536,80 CZK. Zahlungsdetails: KOSIK-EINZELHANDEL   S. R. O. & gt; 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 versucht, dies mit Filterregeln in Gmail und Thunderbird zu tun. 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.

Sebastian
quelle

Antworten:

2

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

Als Auslöser wählte ich den Google Mail-Dienst und wählte Neue E-Mail im Posteingang unter "[email protected]" 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: {{Betreff}}
  • Körper: {{BodyPlain}}

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 behandelt. Dokumentation ":

Sie können mehrere Ausgaben in einer einzelnen Nachricht senden, indem Sie sie eingeben   jeweils in einer separaten Zeile oder durch Semikolon getrennt (;)

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

Derzeit funktioniert diese Lösung gut mit Zahlungskartentransaktionen. Die Überwachung eingehender Zahlungen erfordert die Bearbeitung mehrerer Konten. Ausgehende Zahlungen müssten das Problem mit Rechnungskartenzahlungen lösen.

Sebastian
quelle
0

Ich kann auf Unix antworten, hier auf 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, das die Nachrichten mithilfe des entsprechenden Protokolls vom Remote-Server abrufen kann. 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 dieser Tools nicht auf dem Anfängerlevel liegt.

Claude Frantz
quelle
Vielen Dank, dass Sie mir Linux-Tools empfohlen haben. Ich werde versuchen, sie näher zu betrachten, aber ich sehe immer noch nicht die Möglichkeit, fetchmail und sendmail miteinander zu verbinden. Ich meine: Wie erhält man Informationen aus eingehenden E-Mails? und übergeben Sie es an sendmail
Sebastian
In der üblichen Art und Weise sendet fetchmail eingehende Nachrichten an sendmail, um sie an die lokalen Postfächer zu senden.
Claude Frantz
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 & lt; Nachrichtendatei", um die Nachricht an sendmail zu übermitteln.
Claude Frantz
-1

Sie benötigen einen POP / IMAP-Server auf Ihrem Mailserver, 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.

HelpBox
quelle