Regelbasierte E-Mail-Benachrichtigung in Access aus WordPress-Ereignissen generieren

Warum ich das mache

In vielen KMU-Projekten passiert im WordPress-Frontend mehr, als man denkt: neue Anfragen, Anmeldungen, Uploads.
Die interne IT will bei bestimmten Dingen informiert werden. Automatisch, zeitnah, ohne doppelte Mails.
Access eignet sich gut als Zentrale fĂŒr solche Trigger – vor allem bei bestehenden Access-Anwendungen.

Überblick: Der Ablauf

  1. WordPress-Ereignisse erfassen (API oder Push)
  2. Rohdaten regelmĂ€ĂŸig nach Access holen
  3. Regeln definieren (SQL)
  4. Benachrichtigung per E-Mail auslösen (VBA)

1. WordPress-Ereignisse erfassen

Variante A: REST API zyklisch abrufen

Beispiel: neue EintrÀge in Gravity Forms, WPForms oder CPTs.

Function LadeJson(URL As String) As String
    Dim http As Object
    Set http = CreateObject("WinHttp.WinHttpRequest.5.1")
    
    http.Open "GET", URL, False
    http.Send
    
    If http.Status = 200 Then
        LadeJson = http.ResponseText
    Else
        LadeJson = ""
    End If
End Function

SpĂ€ter per Timer oder Autoexec-Makro ausfĂŒhren.

Variante B: Push aus WordPress per Webhook

Du richtest in WordPress einen kleinen Hook ein:

add_action('wpforms_process_complete', function($fields, $entry, $form_data) {
    $data = [
        'form' => $form_data['id'],
        'email' => $fields[1]['value'],
        'timestamp' => time()
    ];
    wp_remote_post('https://dein-server.de/access-endpunkt.php', [
        'body' => json_encode($data),
        'headers' => ['Content-Type' => 'application/json']
    ]);
}, 10, 3);

Dann speicherst Du die Daten serverseitig z. B. als CSV oder in einer MySQL-Logtabelle. Access kann sie per ODBC regelmĂ€ĂŸig holen.

2. WordPress-Rohdaten nach Access holen

Beispiel: Daten aus wp_form_log ĂŒber ODBC laden

INSERT INTO wp_import_formlog (form_id, email, zeitpunkt)
SELECT form, email, FROM_UNIXTIME(timestamp)
FROM [ODBC;DSN=wordpress;].wp_form_log
WHERE id > (SELECT Nz(Max(wp_id), 0) FROM wp_import_formlog);

Achte auf Zeitstempel und ID als Fortschrittsmarker.

3. Regeln definieren (SQL)

Du willst nur in bestimmten FĂ€llen benachrichtigen.
Beispiel: E-Mail-Adresse endet auf @firma.de UND es wurde ein bestimmtes Formular abgeschickt.

SELECT *
FROM wp_import_formlog
WHERE email LIKE '*@firma.de'
  AND form_id IN (3, 7)
  AND Notifiziert = False;

Regeln kannst Du flexibel gestalten:

Regel-IDBedingung_SQL
1email LIKE "*@firma.de"
2form_id = 5 AND zeitpunkt > Date() - 1
3InStr(email, "chef") > 0 AND form_id IN (2,3)

Du kannst sie sogar dynamisch in VBA prĂŒfen (DAO oder Eval).

4. Benachrichtigung auslösen (VBA)

Sub SendeBenachrichtigungen()
    Dim db As DAO.Database
    Dim rs As DAO.Recordset
    Dim olApp As Object, olMail As Object
    Set db = CurrentDb
    Set rs = db.OpenRecordset("SELECT * FROM qry_benachrichtigung_kandidaten", dbOpenDynaset)

    Set olApp = CreateObject("Outlook.Application")

    Do Until rs.EOF
        Set olMail = olApp.CreateItem(0)
        olMail.To = "it@firma.de"
        olMail.Subject = "Neue WordPress-Aktion"
        olMail.Body = "Formular-ID: " & rs!form_id & vbCrLf & _
                      "E-Mail: " & rs!email & vbCrLf & _
                      "Zeit: " & rs!zeitpunkt
        olMail.Send

        rs.Edit
        rs!Notifiziert = True
        rs.Update

        rs.MoveNext
    Loop

    rs.Close
    Set rs = Nothing
    Set olMail = Nothing
    Set olApp = Nothing
End Sub

TĂ€glicher Aufruf per Autoexec-Makro oder Windows-Task mit /x-Startparameter.

Mein Setup im Alltag

  • WordPress schreibt ins Log (einfache Tabelle)
  • Access zieht minĂŒtlich neue EintrĂ€ge
  • SQL prĂŒft Regeln
  • VBA schickt Mails, markiert als erledigt

Ich nutze dafĂŒr eine kleine Tabelle tblBenachrichtigungStatus mit Timestamp, Mailadresse, Regel-ID.
So vermeide ich Dopplungen.

Kategorien:

Keine Antworten

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert