12 Giorni di DigitalOcean (Giorno 12) – Inviare Email di Conferma con Resend

Benvenuti all’ultimo giorno della nostra serie 12 Giorni di DigitalOcean! Abbiamo fatto molta strada, costruendo un Servizio di Elaborazione Ricevute Basato su Email che estrae i dettagli delle ricevute da Postmark utilizzando l’Agente GenAI di DigitalOcean, memorizza in modo sicuro allegati in DigitalOcean Spaces, e salva i dati estratti in Google Sheets.

Oggi, aggiungeremo il tocco finale: inviare email di conferma al mittente con i dettagli della ricevuta, i link agli allegati e un link al Foglio di Calcolo di Google. Questo passaggio finale unisce tutto, assicurando che gli utenti ricevano un feedback immediato che le loro ricevute sono state elaborate con successo.

🚀 Cosa Imparerai

Alla fine di questo tutorial, saprai come:

  1. Utilizzare l’API di Rispedizione per inviare email di conferma in modo programmato.
  2. Gestire in modo sicuro credenziali sensibili utilizzando le variabili d’ambiente.
  3. Formattare e inviare email transazionali con dettagli della ricevuta, collegamenti agli allegati e URL del foglio di calcolo.
  4. Testare e risolvere i problemi di un flusso di lavoro completo di elaborazione delle email.

🛠 Cosa ti occorre

Se desideri seguire la procedura, assumiamo che tu abbia seguito Giorno 11: Salvare i Dati della Ricevuta e gli Allegati in Google Sheets e che tu abbia già:

Se sei interessato solo a imparare come integrare Resend per inviare email di conferma, avrai bisogno di:

  • Un account Resend: Registrati su Resend.
  • Una chiave API: Generala dal tuo pannello di controllo di Resend.

Passo 1: Creare un account Resend e ottenere la chiave API

Per inviare email in modo programmato, utilizzeremo Resend, un’API sviluppata per l’invio di email transazionali. Semplifica l’invio di email in modo da non dover gestire la configurazione di un server email, configurazioni SMTP o preoccuparti dei filtri antispam.

  1. Prima di tutto, vai su Resend e registrati per un account gratuito. Una volta effettuato l’accesso, vai alla sezione Chiavi API della dashboard e genera una nuova chiave API.

  2. Assegna alla tua chiave API un nome descrittivo, come App Elaborazione Ricevuta, e imposta il suo permesso su Accesso Completo.

  3. Copia la chiave API: La tua chiave API verrà mostrata solo una volta, copiala e conservala in un posto sicuro. Avrai bisogno di essa nel passaggio successivo per autenticare la tua app con Resend.

Passaggio 2: Aggiorna le tue variabili d’ambiente

Ora che abbiamo la chiave API di Resend, salviamola come variabile d’ambiente in DigitalOcean, proprio come abbiamo fatto in tutta questa serie.

Per l’integrazione con Resend, dobbiamo salvare due variabili d’ambiente:

  • RESEND_API_KEY: La chiave API generata nel Passaggio 1, che autentica la tua app con Resend.
  • RESEND_EMAIL_FROM: L’indirizzo email del mittente che userai per inviare email di conferma. Questo dovrebbe essere un indirizzo verificato nel tuo account Resend.

Per aggiungere queste variabili, segui questi passaggi:

  1. Vai al pannello di controllo della piattaforma dell’applicazione DigitalOcean, trova la tua app Flask e vai alla scheda Impostazioni. Sotto Variabili d’ambiente, aggiungi le due variabili:
    • Chiave: RESEND_API_KEY

      • Valore: Incolla la chiave API che hai generato al Passo 1.
    • Chiave: RESEND_EMAIL_FROM

      • Valore: Inserisci un indirizzo email del mittente verificato dal tuo account Resend.
  2. Salva le modifiche per rendere disponibile la chiave API di Resend alla tua app Flask, che aggiorneremo successivamente.

Passaggio 3: Installare la libreria Resend Python

Successivamente, installeremo la libreria Resend Python per gestire l’API al nostro posto. Mantiene pulito il tuo codice e evita di dover gestire richieste HTTP grezze. Esegui questo nel tuo terminale:

pip install resend

Passaggio 4: Aggiornare requirements.txt

Al posto di modificare requirements.txt a mano, utilizza pip freeze per elencare tutte le dipendenze installate con le versioni esatte. Esegui questo:

pip freeze > requirements.txt

Questo aggiorna requirements.txt con tutto ciò di cui ha bisogno la tua app, inclusa resend.

Passaggio 5: Scrivere la Funzione per Inviare Email

Ora è il momento di aggiungere la logica per inviare email di conferma. Pensaci come se stessi inviando una email a un amico per informarlo che il suo pacchetto è arrivato, ma qui si tratta di ricevute.

Scriveremo una funzione send_confirmation_email che prende l’email del destinatario, i dettagli dello scontrino, i collegamenti agli allegati e l’URL del foglio di calcolo di Google. Utilizzando Resend, formattarlo in un’email e inviarlo. Ecco la funzione:

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')  # Imposta questo nelle variabili d'ambiente
    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}")

Passaggio 5: Distribuisci su DigitalOcean

Per distribuire l’applicazione Flask aggiornata, segui i passaggi del Giorno 7: Costruzione e Distribuzione del Processore di Ricevute basato su Email. Ecco un breve riassunto:

  1. Carica il Tuo Codice Aggiornato su GitHub: Dopo aver apportato le modifiche necessarie alla tua applicazione Flask, esegui il commit e carica il codice aggiornato su GitHub. Questo attiverà una distribuzione automatica sulla Piattaforma App di DigitalOcean.

    git add .
    git commit -m "Aggiungi integrazione Resend per le email di conferma"
    git push origin main
    
  2. Monitora il Rilascio: Puoi seguire il progresso nella sezione Rilasci del cruscotto della tua app.

  3. Verifica il Tuo Rilascio: Dopo il completamento del rilascio, vai all’URL pubblico della tua app e testa la sua funzionalità. Puoi anche controllare i log di esecuzione nel cruscotto per confermare che l’app sia stata avviata con successo.

  4. Controlla i Log di Esecuzione: Se qualcosa non funziona come previsto, utilizza la scheda Log di Esecuzione nel cruscotto dell’App Platform per risolvere i problemi di esecuzione. Cerca eventuali errori relativi all’API di Resend o ad altri componenti dell’app.

Passaggio 5: Testare l’intero flusso di lavoro

Ora che la tua app è completamente configurata e pronta, è il momento di testare l’intero flusso di lavoro. Ci assicureremo che il corpo dell’email venga elaborato, gli allegati vengano decodificati e caricati su DigitalOcean Spaces, i dettagli della ricevuta e gli URL degli allegati vengano salvati in Google Sheets, e che venga inviata una email di conferma al mittente.

Ecco come puoi testare passo dopo passo:

  1. Invia una email di prova: Invia un’email a Postmark con un corpo testuale e un allegato. Se non sei sicuro su come configurare Postmark, controlla Giorno 8: Collegare Postmark alla tua app Flask, dove abbiamo spiegato come impostare Postmark per inoltrare le email alla tua app.

  2. Controlla JSON Attività di Postmark: Nel pannello di controllo di Postmark, vai alla scheda Attività. Trova l’email che hai inviato e assicurati che il payload JSON includa il corpo testo e i dati dell’allegato codificati in Base64. Questo conferma che Postmark sta inoltrando correttamente i dati dell’email alla tua app, come abbiamo configurato in Giorno 8.

  3. Monitorare i Log: Controlla i log di runtime nel pannello della piattaforma dell’app DigitalOcean per assicurarti che l’applicazione elabori il payload JSON. Dovresti vedere i log che mostrano che i dettagli dello scontrino sono stati estratti e gli allegati sono stati caricati su DigitalOcean Spaces. Puoi accedere ai log di runtime nella scheda Log del pannello della piattaforma dell’app DigitalOcean. Se non sei familiare con i log di DigitalOcean, abbiamo esplorato questo durante il Giorno 9: Automazione dell’Analisi degli Scontrini con l’Agente GenAI di DigitalOcean.

  4. Verifica Caricamento Spazi: Visita il tuo Spazio DigitalOcean per confermare che i file siano stati caricati con successo. Dovresti vedere gli allegati nel tuo bucket come configurato in Giorno 10: Conservazione degli Allegati in Spazi DigitalOcean. Se tutto è andato come previsto, i tuoi URL degli allegati saranno accessibili.

  5. Controlla Google Sheets: Apri il tuo Foglio Google e conferma che una nuova riga con dettagli dello scontrino e URL degli allegati sia stata aggiunta, come configurato in Giorno 11: Salvataggio Dettagli Scontrino in Google Sheets. La riga dovrebbe includere:

    • Fornitore, importo, valuta e data estratti dal corpo dell’email.
    • URL separati da virgola per gli allegati caricati nell’ultima colonna.

  6. Verifica l’Email di Conferma: Infine, controlla la casella di posta dell’indirizzo email del mittente per assicurarti che l’email di conferma sia stata ricevuta. Questa email dovrebbe contenere:

    • I dettagli dello scontrino estratti (fornitore, importo, valuta e data).
    • Collegamenti agli allegati caricati in DigitalOcean Spaces.
    • Un link al foglio di calcolo di Google dove i dati dello scontrino sono registrati.

Risoluzione dei problemi

Se il flusso di lavoro non funziona come previsto, ecco alcuni passaggi per la risoluzione dei problemi da seguire:

  1. Controllare il Pannello di controllo degli invii di email: Visita il pannello di controllo degli invii per verificare se sono stati riscontrati errori durante l’invio dell’email di conferma.

  2. Verificare le Variabili d’Ambiente: Assicurati che la chiave API (RESEND_API_KEY) e l’email del mittente (RESEND_EMAIL_FROM) siano configurati correttamente nelle variabili d’ambiente sul pannello di controllo della Piattaforma App di DigitalOcean.

  3. Esaminare i Log di Esecuzione di DigitalOcean: Apre la scheda Log di Esecuzione nel pannello di controllo della Piattaforma App di DigitalOcean per controllare gli errori durante l’elaborazione dell’email o il caricamento degli allegati. Questi log possono fornire utili informazioni, specialmente per le interazioni con Postmark o Resend.

  4. Esaminare l’Attività di Postmark: Nella scheda Attività di Postmark, confermare che l’email di test sia stata inoltrata correttamente alla tua app Flask. Se ci sono problemi, Postmark mostrerà errori legati all’inoltro o a problemi di configurazione.

🎁 Conclusione

Complimenti! Hai completato con successo la serie 12 Giorni di DigitalOcean e hai costruito un servizio di Elaborazione delle Ricevute basato su Email completamente funzionale.

Oggi, hai:

  • Integrato l’API di Resend per l’invio di email transazionali.
  • Configurato le variabili d’ambiente per gestire in modo sicuro credenziali sensibili.
  • Inviato email di conferma con dettagli della ricevuta, link agli allegati e un URL del foglio di calcolo.
  • Testato l’intero flusso di lavoro dall’invio dell’email alla conferma finale.

Aggiungendo email di conferma, hai completato un progetto che elabora email, estrae dettagli, memorizza allegati e tiene tutto organizzato in Google Sheets. È user-friendly, pratico e pronto a risolvere problemi del mondo reale.

📚 I 12 Giorni di DigitalOcean

Questo segna la fine della serie 12 Giorni di DigitalOcean. Negli ultimi 12 giorni, abbiamo costruito due applicazioni del mondo reale, passo dopo passo. Lungo il percorso, hai utilizzato strumenti come le Funzioni Serverless di DigitalOcean, App Platform, Spaces Object Storage, PostgreSQL, DigitalOcean GenAI, Twilio, Google Sheets API, Postmark, PaperTrail e Resend. Ogni pezzo si è unito per formare qualcosa di più grande della somma delle sue parti.

Ecco un breve riassunto di ciò che hai costruito:

🎂 Giorni 1-6: Costruire un Servizio di Promemoria di Compleanno

Questa app tiene traccia dei compleanni e invia promemoria tramite SMS in modo automatico. È leggera, senza server e facile da mantenere.

Entro il Giorno 6, hai un servizio completamente automatizzato in esecuzione nel cloud. Funziona perfettamente.

📧 Giorni 7-12: Costruisci un Elaboratore di Ricevute via Email

Questa app gestisce le ricevute inviate via email, estrae i dettagli necessari e organizza tutto in un database.

Entro il Giorno 12, hai costruito uno strumento completo che gestisce gli scontrini da un’estremità all’altra.

Cosa hai imparato

  1. Archiviazione e Gestione dei Dati: Hai utilizzato PostgreSQL per lo storage dei dati strutturati e Google Sheets per un logging dati facile e condivisibile.
  2. Automatizzazione dei flussi di lavoro: Con le Funzioni di DigitalOcean e trigger di pianificazione, hai automatizzato i processi e fatto funzionare le tue app come un orologio.
  3. Aggiunta di intelligenza alle tue app: Integrando GenAI di DigitalOcean, hai introdotto l’estrazione intelligente dei dati e l’organizzazione nei tuoi flussi di lavoro, rendendo le tue app più intelligenti e capaci.
  4. Gestione sicura dei file: Hai lavorato con Spaces di DigitalOcean per memorizzare e gestire file in modo affidabile e scalabile.
  5. Miglioramento delle app con le API: API come Twilio, Postmark e Resend hanno portato funzionalità come notifiche SMS, inoltro di email e email di conferma alle tue app.
  6. Debugging and Monitoring: Utilizzando strumenti come Papertrail, hai imparato a debuggare e monitorare le tue app in modo efficace, mantenendole in esecuzione senza problemi.

Cosa fare dopo

Questo è solo l’inizio: ciò che hai imparato qui può essere applicato a innumerevoli altri progetti. Ecco alcuni modi per continuare:

  • Unisciti alla conversazione su Discord di DigitalOcean per connetterti con altri sviluppatori, condividere ciò che hai creato e farti ispirare.
  • Esplora di più nella nostra libreria di tutorial per ulteriori idee e progetti.

Se continui a seguire, sarei felice di vedere cosa crei: sentiti libero di condividere i tuoi progressi o feedback con me su Twitter.

Mantieni le cose semplici. Costruisci qualcosa di utile. Buona costruzione! 🚀

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