12 Tage von DigitalOcean (Tag 12) – Bestätigungs-E-Mails mit Resend senden

Willkommen am letzten Tag unserer 12 Days of DigitalOcean Serie! Wir haben einen langen Weg zurückgelegt, indem wir einen E-Mail-basierten Belegverarbeitungsdienst entwickelt haben, der Belegdetails von Postmark mit Hilfe des GenAI Agenten von DigitalOcean extrahiert, sicher Anhänge in DigitalOcean Spaces speichert und die extrahierten Daten in Google Sheets speichert.

Heute fügen wir den letzten Schliff hinzu – das Versenden von Bestätigungs-E-Mails zurück an den Absender mit den Belegdetails, den Links zu den Anhängen und einem Link zur Google-Tabelle. Dieser letzte Schritt verbindet alles miteinander und stellt sicher, dass die Benutzer sofortiges Feedback erhalten, dass ihre Belege erfolgreich verarbeitet wurden.

🚀 Was Sie Lernen Werden

Am Ende dieses Tutorials werden Sie wissen, wie Sie:

  1. Die Resend API verwenden, um Bestätigungs-E-Mails programmgesteuert zu senden.
  2. Verwalten Sie sensible Anmeldeinformationen sicher mit Umgebungsvariablen.
  3. Formatieren und senden Sie transaktionale E-Mails mit Empfangsdetails, Anhangslinks und Tabellenkalkulations-URLs.
  4. Testen und beheben Sie einen vollständigen E-Mail-Verarbeitungsworkflow.

🛠 Was Sie benötigen

Wenn Sie mitbauen möchten, gehen wir davon aus, dass Sie Tag 11: Speichern von Empfangsdaten und Anhängen in Google Sheets befolgt haben und bereits haben:

Wenn Sie nur lernen möchten, wie Sie Resend zur Versendung von Bestätigungs-E-Mails integrieren, benötigen Sie:

  • Ein Resend-Konto: Melden Sie sich bei Resend an.
  • Ein API-Schlüssel: Generieren Sie ihn in Ihrem Resend-Dashboard.

Schritt 1: Erstellen Sie ein Resend-Konto und erhalten Sie den API-Schlüssel

Um E-Mails programmgesteuert zu versenden, verwenden wir Resend, eine entwicklerfreundliche API zum Versenden von Transaktions-E-Mails. Es vereinfacht das Versenden von E-Mails, sodass Sie sich nicht mit der Einrichtung eines E-Mail-Servers, der Verwaltung von SMTP-Konfigurationen oder dem Umgang mit Spamfiltern herumschlagen müssen.

  1. Gehen Sie zuerst zu Resend und melden Sie sich für ein kostenloses Konto an. Nach dem Einloggen navigieren Sie zum Abschnitt API-Schlüssel im Dashboard und generieren einen neuen API-Schlüssel.

  2. Geben Sie Ihrem API-Schlüssel einen beschreibenden Namen, wie Receipt Processor App, und setzen Sie seine Berechtigung auf Vollzugriff.

  3. API-Schlüssel kopieren: Ihr API-Schlüssel wird nur einmal angezeigt—kopieren Sie ihn und bewahren Sie ihn sicher auf. Sie benötigen ihn im nächsten Schritt, um Ihre App bei Resend zu authentifizieren.

Schritt 2: Aktualisieren Sie Ihre Umgebungsvariablen

Jetzt, da wir den Resend API-Schlüssel haben, speichern wir ihn als Umgebungsvariable in DigitalOcean, so wie wir es in dieser Reihe gemacht haben.

Für die Resend-Integration müssen wir zwei Umgebungsvariablen speichern:

  • RESEND_API_KEY: Der API-Schlüssel, den Sie in Schritt 1 generiert haben, der Ihre App bei Resend authentifiziert.
  • RESEND_EMAIL_FROM: Die E-Mail-Adresse des Absenders, die Sie zum Versenden von Bestätigungs-E-Mails verwenden werden. Dies sollte eine Adresse sein, die in Ihrem Resend-Konto verifiziert ist.

Um diese Variablen hinzuzufügen, folgen Sie diesen Schritten:

  1. Gehe zu deinem DigitalOcean App Platform Dashboard, finde deine Flask-App und gehe zum Einstellungen-Tab. Unter Umgebungsvariablen füge die beiden Variablen hinzu:

    • Schlüssel: RESEND_API_KEY

      • Wert: Füge den API-Schlüssel ein, den du in Schritt 1 generiert hast.
    • Schlüssel: RESEND_EMAIL_FROM

      • Wert: Gib eine verifizierte Absender-E-Mail-Adresse von deinem Resend-Konto ein.
  2. Speichere deine Änderungen, um den Resend API-Schlüssel für deine Flask-App verfügbar zu machen, die wir als Nächstes aktualisieren werden.

Schritt 3: Installieren Sie die Resend Python-Bibliothek

Als Nächstes installieren wir die Resend Python-Bibliothek, um die API für uns zu verwalten. Dadurch bleibt Ihr Code sauber und Sie müssen sich nicht mit Roh-HTTP-Anfragen befassen. Führen Sie dies in Ihrem Terminal aus:

pip install resend

Schritt 4: Aktualisieren Sie requirements.txt

Verwenden Sie anstelle der manuellen Bearbeitung von requirements.txt den Befehl pip freeze, um alle installierten Abhängigkeiten mit genauen Versionen aufzulisten. Führen Sie dies aus:

pip freeze > requirements.txt

Dadurch wird requirements.txt mit allem aktualisiert, was Ihre App benötigt, einschließlich resend.

Schritt 5: Schreiben Sie die Funktion zum Senden von E-Mails

Jetzt ist es an der Zeit, die Logik zum Senden von Bestätigungs-E-Mails hinzuzufügen. Denken Sie daran, es ist wie das Versenden einer E-Mail an einen Freund, um ihn darüber zu informieren, dass sein Paket angekommen ist – nur hier geht es um Quittungen.

Wir werden eine send_confirmation_email Funktion schreiben, die die E-Mail des Empfängers, die Belegdaten, die Links zu Anhängen und die URL der Google-Tabelle entgegennimmt. Mithilfe von Resend wird dies in eine E-Mail formatiert und versendet. Hier ist die Funktion:

def send_confirmation_email(to_email, receipt_data, attachment_urls, spreadsheet_url):
    """
    Send a confirmation email with receipt details and attachment URLs.
    """
    email_from = os.getenv('RESEND_EMAIL_FROM')  # Setze dies in deinen Umgebungsvariablen
    subject = "Receipt Processed Successfully"
    email_body = f"""
    <h1>Receipt Confirmation</h1>
    <p>Your receipt has been successfully processed. Here are the details:</p>
    <ul>
        <li><strong>Vendor:</strong> {receipt_data.get('vendor', 'N/A')}</li>
        <li><strong>Amount:</strong> {receipt_data.get('amount', 'N/A')}</li>
        <li><strong>Currency:</strong> {receipt_data.get('currency', 'N/A')}</li>
        <li><strong>Date:</strong> {receipt_data.get('date', 'N/A')}</li>
    </ul>
    <p><strong>Attachments:</strong></p>
    <ul>
        {''.join(f'<li><a href="{url["url"]}">{url["file_name"]}</a></li>' for url in attachment_urls)}
    </ul>
    <p>You can view the processed data in the spreadsheet: <a href="{spreadsheet_url}">Google Spreadsheet</a></p>
    """
    try:
        resend.Emails.send({
            "from": email_from,
            "to": to_email,
            "subject": subject,
            "html": email_body
        })
        logging.info(f"Confirmation email sent to {to_email}.")
    except Exception as e:
        logging.error(f"Failed to send confirmation email: {e}")

Schritt 5: Bereitstellung auf DigitalOcean

Um die aktualisierte Flask-App bereitzustellen, befolge die Schritte aus Tag 7: Erstellung und Bereitstellung des E-Mail-basierten Belegverarbeiters. Hier ist eine kurze Zusammenfassung:

  1. Übertrage deinen aktualisierten Code nach GitHub: Nachdem du die erforderlichen Änderungen an deiner Flask-App vorgenommen hast, committe und pushe den aktualisierten Code nach GitHub. Dies wird eine automatische Bereitstellung in der App-Plattform von DigitalOcean auslösen.

    git add .
    git commit -m "Resend-Integration für Bestätigungs-E-Mails hinzufügen"
    git push origin main
    
  2. Überwachen der Bereitstellung: Sie können den Fortschritt im Abschnitt Bereitstellungen im Dashboard Ihrer App verfolgen.

  3. Überprüfen Sie Ihre Bereitstellung: Nach Abschluss der Bereitstellung gehen Sie zur öffentlichen URL Ihrer App und testen deren Funktionalität. Sie können auch die Laufzeitprotokolle im Dashboard überprüfen, um zu bestätigen, dass die App erfolgreich gestartet wurde.

  4. Überprüfen der Laufzeitprotokolle: Wenn etwas nicht wie erwartet funktioniert, verwenden Sie den Tab Laufzeitprotokolle im App-Plattform-Dashboard, um Laufzeitprobleme zu debuggen. Suchen Sie nach Fehlern im Zusammenhang mit der Resend-API oder anderen App-Komponenten.

Schritt 5: Testen Sie den gesamten Workflow

Jetzt, da Ihre App vollständig konfiguriert und bereit ist, ist es an der Zeit, den gesamten Workflow zu testen. Wir werden sicherstellen, dass der E-Mail-Inhalt verarbeitet, Anhänge dekodiert und in DigitalOcean Spaces hochgeladen, Belegdaten und Anhang-URLs in Google Sheets gespeichert und eine Bestätigungs-E-Mail an den Absender gesendet wird.

So können Sie Schritt für Schritt testen:

  1. Sendet eine Test-E-Mail: Senden Sie eine E-Mail an Postmark mit einem Textinhalt und einem Anhang. Wenn Sie sich nicht sicher sind, wie Sie Postmark konfigurieren, überprüfen Sie Tag 8: Verbindung von Postmark mit Ihrer Flask-App, wo wir die Einrichtung von Postmark durchgegangen sind, um E-Mails an Ihre App weiterzuleiten.

  2. Postmark-Aktivität JSON überprüfen: Navigieren Sie im Postmark-Dashboard zum Tab Aktivität. Suchen Sie die E-Mail, die Sie gesendet haben, und stellen Sie sicher, dass die JSON-Nutzlast den Textinhalt und die Base64-kodierten Anhangsdaten enthält. Dies bestätigt, dass Postmark die E-Mail-Daten korrekt an Ihre App weiterleitet, wie wir in Tag 8 eingerichtet haben.

  3. Überwachen Sie die Protokolle: Überprüfen Sie die Laufzeitprotokolle in Ihrem DigitalOcean App Platform-Dashboard, um sicherzustellen, dass die App den JSON-Payload verarbeitet. Sie sollten Protokolle sehen, die zeigen, dass Belegdetails extrahiert und Anhänge in DigitalOcean Spaces hochgeladen wurden. Die Laufzeitprotokolle können im Tab Protokolle des DigitalOcean App Platform-Dashboards abgerufen werden. Wenn Sie mit den DigitalOcean-Protokollen nicht vertraut sind, haben wir dies während Tag 9: Automatisches Parsen von Belegen mit dem GenAI-Agenten von DigitalOcean erkundet.

  4. Überprüfen Sie den Spaces-Upload: Besuchen Sie Ihren DigitalOcean Space, um zu bestätigen, dass die Dateien erfolgreich hochgeladen wurden. Sie sollten die Anhänge in Ihrem Eimer sehen, wie in Tag 10: Speichern von Anhängen in DigitalOcean Spaces konfiguriert. Wenn alles wie erwartet verlaufen ist, werden Ihre Anhang-URLs zugänglich sein.

  5. Überprüfen Sie Google Sheets: Öffnen Sie Ihr Google Sheet und bestätigen Sie, dass eine neue Zeile mit Belegdetails und Anhang-URLs hinzugefügt wurde, wie wir es in Tag 11: Speichern von Belegdetails in Google Sheets eingerichtet haben. Die Zeile sollte Folgendes enthalten:

    • Verkäufer, Betrag, Währung und Datum aus dem E-Mail-Text extrahiert.
    • Komma-separierte URLs für die hochgeladenen Anhänge in der letzten Spalte.

  6. Bestätigen Sie die Bestätigungs-E-Mail: Überprüfen Sie abschließend das Postfach der E-Mail-Adresse des Absenders, um sicherzustellen, dass die Bestätigungs-E-Mail empfangen wurde. Diese E-Mail sollte enthalten:

    • Die extrahierten Belegdetails (Verkäufer, Betrag, Währung und Datum).
    • Links zu den hochgeladenen Anhängen in DigitalOcean Spaces.
    • Ein Link zum Google Spreadsheet, in dem die Belegdaten protokolliert sind.

Fehlerbehebung

Wenn der Workflow nicht wie erwartet funktioniert, befolgen Sie bitte die folgenden Schritte zur Fehlerbehebung:

  1. Überprüfen Sie das Dashboard für erneut gesendete E-Mails auf Fehler: Besuchen Sie das Dashboard für erneut gesendete E-Mails, um zu sehen, ob Fehler bei der Bestätigungs-E-Mail aufgetreten sind.

  2. Überprüfen Sie Umgebungsvariablen: Stellen Sie sicher, dass der API-Schlüssel (RESEND_API_KEY) und die Absender-E-Mail-Adresse (RESEND_EMAIL_FROM) korrekt in Ihren Umgebungsvariablen auf dem Dashboard der DigitalOcean App Platform konfiguriert sind.

  3. Überprüfen Sie die DigitalOcean Laufzeitprotokolle: Öffnen Sie den Tab Laufzeitprotokolle in Ihrem Dashboard der DigitalOcean App Platform, um nach Fehlern beim Verarbeiten der E-Mail oder beim Hochladen von Anhängen zu suchen. Diese Protokolle können nützliche Einblicke bieten, insbesondere bei Interaktionen mit Postmark oder Resend.

  4. Überprüfen Sie die Postmark-Aktivität: Bestätigen Sie im Tab Aktivität von Postmark, dass die Test-E-Mail ordnungsgemäß an Ihre Flask-App weitergeleitet wurde. Bei Problemen zeigt Postmark Fehler im Zusammenhang mit Weiterleitung oder Konfigurationsproblemen an.

🎁 Fazit

Herzlichen Glückwunsch! Sie haben die Serie 12 Tage DigitalOcean erfolgreich abgeschlossen und einen voll funktionsfähigen E-Mail-basierten Belegverarbeitungsdienst erstellt.

Heute haben Sie:

  • Die Resend-API integriert, um Transaktions-E-Mails zu senden.
  • Umgebungsvariablen konfiguriert, um sensible Anmeldeinformationen sicher zu verwalten.
  • Bestätigungs-E-Mails mit Belegdetails, Anhangslinks und einer Tabellenblatt-URL gesendet.
  • Den vollständigen Workflow vom Einreichen der E-Mail bis zur endgültigen Bestätigung getestet.

Durch das Hinzufügen von Bestätigungs-E-Mails haben Sie ein Projekt abgeschlossen, das E-Mails verarbeitet, Details extrahiert, Anhänge speichert und alles in Google Sheets organisiert. Es ist benutzerfreundlich, praktisch und bereit, reale Probleme zu lösen.

📚 Die 12 Tage von DigitalOcean

Dies markiert das Ende der 12 Tage von DigitalOcean Serie. In den letzten 12 Tagen haben wir Schritt für Schritt zwei Anwendungen für den realen Einsatz entwickelt. Auf dem Weg haben Sie Tools wie DigitalOcean’s Serverless Functions, App Platform, Spaces Object Storage, PostgreSQL, DigitalOcean GenAI, Twilio, Google Sheets API, Postmark, PaperTrail und Resend verwendet. Jedes Teil fügte sich zusammen, um etwas Größeres als die Summe seiner Teile zu bilden.

Hier ist eine kurze Zusammenfassung dessen, was Sie gebaut haben:

🎂 Tage 1–6: Ein Geburtstags-Erinnerungsdienst erstellen

Diese App verfolgt Geburtstage und sendet automatisch SMS-Erinnerungen. Sie ist leichtgewichtig, serverlos und einfach zu warten.

Bis Tag 6 haben Sie einen vollständig automatisierten Dienst in der Cloud, der einfach funktioniert.

📧 Tage 7–12: Erstellen Sie einen E-Mail-Belegprozessor

Diese App verarbeitet E-Mail-Belege, extrahiert die benötigten Details und organisiert alles in einer Datenbank.

Bis Tag 12 haben Sie ein vollständiges Tool entwickelt, das Belege von Anfang bis Ende verwaltet.

Was Sie gelernt haben

  1. Daten speichern und verwalten: Sie haben PostgreSQL für die Speicherung strukturierter Daten und Google Sheets für einfaches, teilbares Datenprotokoll verwendet.
  2. Automatisierung von Workflows: Mit DigitalOcean Funktionen und planmäßigen Triggern automatisierten Sie Prozesse und ließen Ihre Apps wie am Schnürchen laufen.
  3. Hinzufügen von Intelligenz zu Ihren Apps: Durch die Integration von DigitalOcean’s GenAI brachten Sie intelligente Datenextraktion und -organisation in Ihre Workflows, wodurch Ihre Apps intelligenter und leistungsfähiger wurden.
  4. Sicheres Handling von Dateien: Sie arbeiteten mit DigitalOcean Spaces, um Dateien auf zuverlässige und skalierbare Weise zu speichern und zu verwalten.
  5. Verbesserung von Apps mit APIs: APIs wie Twilio, Postmark und Resend brachten Funktionen wie SMS-Benachrichtigungen, E-Mail-Weiterleitung und Bestätigungs-E-Mails in Ihre Apps.
  6. Debugging und Überwachung: Mit Tools wie Papertrail hast du gelernt, deine Apps effektiv zu debuggen und zu überwachen, um einen reibungslosen Betrieb zu gewährleisten.

Was kommt als Nächstes

Das ist erst der Anfang – das, was du hier gelernt hast, kann auf unzählige andere Projekte angewendet werden. Hier sind einige Möglichkeiten, um weiterzumachen:

  • Tritt der Diskussion auf DigitalOcean’s Discord bei, um dich mit anderen Entwicklern zu vernetzen, was du erstellt hast zu teilen und inspiriert zu werden.
  • Entdecke mehr in unserer Tutorialbibliothek für weitere Ideen und Projekte.

Wenn du mitmachst, würde ich gerne sehen, was du erschaffst – fühl dich frei, deinen Fortschritt oder dein Feedback mit mir auf Twitter zu teilen.

Halte es einfach. Baue etwas Nützliches. Viel Spaß beim Bauen! 🚀

Source:
https://www.digitalocean.com/community/tutorials/sending-confirmation-emails-with-resend