12 ימי DigitalOcean (יום 12) – שליחת אימיילי אישור עם אופציה לשליחה חוזרת

ברוכים הבאים ליום האחרון של סדרת 12 ימים של DigitalOcean! הגענו רחוק עם בניית שירות עיבוד קבלות מבוסס דואר אלקטרוני שמחלץ פרטי קבלה מתוך Postmark באמצעות GenAI Agent של DigitalOcean, מאחסן בצורה מאובטחת קבצים מצורפים ב-DigitalOcean Spaces, ושומר את הנתונים שהוצאו בגיליון Google.

היום, נוסיף את הציוץ האחרון – שליחת דואר אלקטרוני אישור חזרה לשולח עם פרטי הקבלה, קישורים לקבצי המצורפים, וקישור לגיליון Google. שלב זה קושר את הכול ביחד, ומבטיח שהמשתמשים מקבלים משוב מיידי שהקבלות שלהם עובדו בהצלחה.

🚀 מה תלמדו

עד סיום המדריך הזה, תדעו איך:

  1. להשתמש ב-Resend API לשליחת דואר אלקטרוני אישורי באופן תכנותי.
  2. נהל מאובטחת פרטי כניסה רגישים באמצעות משתנים סביבתיים.
  3. עצב ושלח דואר אלקטרוני טרנזקציונלי עם פרטי קבלה, קישורי קבצים מצורפים וכתובות URL של גיליונות אלקטרוניים.
  4. בצע בדיקות ופתר בעיות בתהליך העיבוד המיילי המלא.

🛠 מה שתצטרך

אם ברצונך לבנות עם, אנו מניחים שכבר עקבת אחרי יום 11: שמירת נתוני קבלה וקבצים מצורפים בגוגל שיטס וכבר יש לך:

  • יישום Flask פעיל לעיבוד מיילים קבלתיים.
  • גוגל שיטס ושילוב DigitalOcean Spaces הוגדר.

אם אתה רק מעוניין ללמוד כיצד לשלב Resend לשליחת מיילי אישור, תצטרך:

  • חשבון Resend: הירשם ב-Resend.
  • מפתח API: צור אותו מלוח הבקרה שלך ב-Resend.

שלב 1: צור חשבון Resend וקבל את מפתח ה- API

כדי לשלוח דואר אלקטרוני באופן תכנותי, נשתמש ב־Resend, API ידידותי למפתחים לשליחת דואר אלקטרוני טרנזקציונלי. זה מקל על שליחת דואר אלקטרוני כך שאין צורך להתעסק בהגדרת שרת דואר אלקטרוני, בניהול הגדרות SMTP או בדאגה למסנני דואר זבל.

  1. ראשית, עבור אל Resend והירשם לחשבון חינם. לאחר ההתחברות, נווט לקטע ה־מפתחות API בלוח המחוונים וצור מפתח API חדש.

  2. תן למפתח ה־API שלך שם תיאורטי, כמו Receipt Processor App, והגדר את ה־הרשאה שלו ל־גישה מלאה.

  3. העתק את מפתח ה-API: מפתח ה-API שלך יוצג רק פעם אחת – העתק אותו ושמור אותו במקום בטוח. תזדקק לו בשלב הבא כדי לאמת את האפליקציה שלך עם Resend.

שלב 2: עדכן את משתני הסביבה שלך

עכשיו שיש לנו את מפתח ה-API של Resend, נציל אותו כמשתנה סביבה ב-DigitalOcean, בדיוק כפי שעשינו במהלך סדרה זו.

לצורך אינטגרציית Resend, אנו צריכים לשמור שני משתני סביבה:

  • RESEND_API_KEY: מפתח ה-API שיצרת בשלב 1, אשר מאמת את האפליקציה שלך עם Resend.
  • RESEND_EMAIL_FROM: כתובת הדוא"ל של השולח שתשתמש בה לשליחת מיילי אישור. זו צריכה להיות כתובת מאומתת בחשבון שלך ב-Resend.

כדי להוסיף את המשתנים הללו, עקוב אחרי הצעדים הבאים:

  1. עבור ללוח הבקרה של פלטפורמת האפליקציות של DigitalOcean שלך, מצא את אפליקציית Flask שלך, ועבור לטאב הגדרות. תחת משתני סביבה, הוסף את שני המשתנים:

    • מפתח: RESEND_API_KEY

      • ערך: הדבק את מפתח ה-API שיצרת בשלב 1.
    • מפתח: RESEND_EMAIL_FROM

      • ערך: הזן כתובת דוא"ל מאומתת לשליחה מחשבון ה-Resend שלך.
  2. שמור את השינויים שלך כדי להפוך את מפתח ה-API של Resend לזמין לאפליקציית Flask שלך, אשר נעדכן בהמשך.

שלב 3: התקנת ספריית ה־Resend Python

בשלב הבא, נתקין את ספריית ה־Resend Python כדי לטפל ב-API עבורנו. זה משמר את הקוד שלך נקי וממנע עיסוק עם בקשות HTTP גולמיות. הריצו את זה בטרמינל שלכם:

pip install resend

שלב 4: עדכון requirements.txt

במקום לערוך את requirements.txt באופן ידני, תשתמשו ב־pip freeze כדי לרשום את כל התלויות שהותקנו עם גרסאות מדויקות. הריצו את זה:

pip freeze > requirements.txt

פעולה זו מעדכנת את requirements.txt עם כל מה שהאפליקציה שלכם צריכה, כולל את resend.

שלב 5: כתיבת הפונקציה לשליחת דואר אלקטרוני

כעת הגיע הזמן להוסיף את הלוגיקה לשליחת מיילי אישור. תחשבו על זה כמו לשלוח מייל לחבר כדי ליידע אותו שהחבילה שלו הגיעה—רק שפה, זה עבור קבלות.

נכתוב פונקציה send_confirmation_email שמקבלת את כתובת המייל של הנמען, פרטי קבלה, קישורי קבצים מצורפים, וכתובת ה-URL של גיליון Google. באמצעות Resend, היא תעצב זאת למייל ותשלח אותו. הנה הפונקציה:

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')  # הגדר זאת במשתני הסביבה שלך
    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}")

שלב 5: פריסה ל-DigitalOcean

כדי לפרוס את אפליקציית Flask המעודכנת, עקוב אחרי השלבים מ-יום 7: בניית ופריסת מעבד קבלות מבוסס מייל. הנה סיכום מהיר:

  1. דחוף את הקוד המעודכן שלך ל-GitHub: לאחר שביצעת את השינויים הנדרשים באפליקציית Flask שלך, התחייב ודחוף את הקוד המעודכן ל-GitHub. זה יגרום לפריסה אוטומטית בפלטפורמת האפליקציות של DigitalOcean.

    git add .
    git commit -m "הוסף אינטגרציה של Resend למיילי אישור"
    git push origin main
    
  2. ניטור פריסה: אתה יכול לעקוב אחרי ההתקדמות בחלק הפריסות של לוח המחוונים של האפליקציה שלך.

  3. אמת את הפריסה שלך: לאחר שהפריסה הושלמה, נווט לכתובת ה-URL הציבורית של האפליקציה שלך ובדוק את הפונקציונליות שלה. אתה יכול גם לבדוק את היומני זמן ריצה בלוח המחוונים כדי לאשר שהאפליקציה הושקה בהצלחה.

  4. בדוק יומני זמן ריצה: אם משהו לא עובד כפי שציפית, השתמש בלשונית יומני זמן ריצה בלוח המחוונים של פלטפורמת האפליקציות כדי לדבג בעיות בזמן ריצה. חפש שגיאות הקשורות ל-API של Resend או רכיבי אפליקציה אחרים.

שלב 5: בדוק את כל זרימת העבודה

עכשיו שהאפליקציה שלך מוגדרת במלואה ומוכנה, הגיע הזמן לבדוק את כל זרימת העבודה. נוודא שה גוף המייל מעובד, קבצים מצורפים מפוענחים ו מועלים ל-DigitalOcean Spaces, פרטי קבלה וכתובות URL של קבצים מצורפים נשמרים בגוגל שיטס, ודוא"ל אישור נשלח למעביר.

הנה איך אתה יכול לבדוק שלב אחר שלב:

  1. שלח דוא"ל ניסוי: שלח דוא"ל ל-Postmark עם גוף טקסט וקובץ מצורף. אם אינך בטוח כיצד להגדיר את Postmark, בדוק את יום 8: חיבור Postmark לאפליקציית Flask שלך, שם עברנו על הגדרת Postmark להעברת דוא"ל לאפליקציה שלך.

  2. בדוק את JSON של פעילות Postmark: בלוח הבקרה של Postmark, נווט ללשונית פעילות. מצא את הדוא"ל ששלחת וודא שהנתונים ב-JJSON כוללים את גוף הטקסט ואת נתוני הקובץ המצורף המוצפנים ב-Base64. זה מאשר ש-Postmark מעביר נכון את נתוני הדוא"ל לאפליקציה שלך, כפי שהגדרנו ביום 8.

  3. ניטור היומנים: בדוק את היומנים בזמן אמת בלוח הבקרה של פלטפורמת האפליקציות של DigitalOcean שלך כדי לוודא שהאפליקציה מעבדת את העמסה של JSON. אתה אמור לראות יומנים המראים כי פרטי הקבלה נמשו וקבצים מצורפים הועלו ל-DigitalOcean Spaces. תוכל לגשת ליומנים בזמן אמת בלשונית יומנים של לוח הבקרה של פלטפורמת האפליקציות של DigitalOcean. אם אינך מכיר את היומנים של DigitalOcean, חקרנו זאת במהלך יום 9: אוטומציה של ניתוח קבלות עם סוכן GenAI של DigitalOcean.

  4. וודא העלאת מרחבים: בקר במרחב הדיגיטלי שלך ב-DigitalOcean כדי לוודא שהקבצים הועלו בהצלחה. אתה צריך לראות את הקבצים המצורפים בדלי שלך כפי שהוגדר ב־יום 10: אחסון קבצים במרחבי DigitalOcean. אם הכל התרחש כצפוי, כתובות הקבצים שלך יהיו נגישות.

  5. בדוק גיליון Google: פתח את גיליונך ב-Google ווודא כי שורה חדשה עם פרטי קבלה וכתובות הקבצים הוספה, כפי שהגדרנו ב־יום 11: שמירת פרטי קבלה בגיליונות Google. השורה צריכה לכלול:

    • ספק, סכום, מטבע ותאריך המופקים מתוך גוף האימייל.
    • קישורי URL מופרדי פסיק לקבצי הצרופים בעמוד האחרון.

  6. אמת את מייל האישור: לבסוף, בדוק את תיבת הדואר הנכנס של כתובת המייל של השולח כדי לוודא שמייל האישור התקבל. מייל זה צריך להכיל:

    • את פרטי הקבלה שהופקו (ספק, סכום, מטבע ותאריך).
    • קישורים לקבצים שהועלו ב-DigitalOcean Spaces.
    • קישור לגיליון Google שבו נתוני הקבלה מתועדים.

פיתרון בעיות

אם הזרימת העבודה לא עובדת כפי שצפוי, הנה מספר שלבי פתירת בעיות לעקוב אחריהם:

  1. בדוק את לוח המחוונים לשליחה מחדש עבור שגיאות: בקר בלוח המחוונים לשליחה מחדש כדי לראות האם אירעו שגיאות בזמן שליחת האימייל לאישור.

  2. אמת את משתני הסביבה: וודא שמפתח ה- API (RESEND_API_KEY) והאימייל של השולח (RESEND_EMAIL_FROM) מוגדרים כראוי במשתני הסביבה שלך בלוח המחוונים של DigitalOcean App Platform.

  3. בדוק את לוח הלוגים של זמן הריצה ב-DigitalOcean: פתח את לשונית הלוגים של זמן הריצה בלוח המחוונים שלך ב-DigitalOcean App Platform כדי לבדוק שגיאות בעת עיבוד האימייל או העלאת קבצים מצורפים. הלוגים אלו יכולים לספק ראיונות שימושיים, במיוחד לאינטראקציות עם Postmark או Resend.

  4. סקור את פעילות Postmark: בכרטיסיית פעילות של Postmark, אשר שהמייל המבחן הועבר כראוי לאפליקציית Flask שלך. אם יש בעיות, Postmark תציג שגיאות הקשורות להעברה או לבעיות קונפיגורציה.

🎁 סיכום

מזל טוב! הצלחת להשלים את סדרת 12 ימים של DigitalOcean ובנית שירות לעיבוד קבלות מבוסס מייל פונקציונלי לחלוטין.

היום, אתה:

  • אינטגרטת את ה-API של Resend לשליחת מיילים טרנזקציוניים.
  • קבעת משתני סביבה כדי לנהל בצורה מאובטחת אישורי גישה רגישים.
  • שלחת מיילי אישור עם פרטי קבלה, קישורי קבצים מצורפים ו-URL של גיליון אלקטרוני.
  • בדקת את כל מהלך העבודה מהגשת המייל ועד לאישור הסופי.

על ידי הוספת מיילי אישור, סיימת פרויקט שמעבד מיילים, שולף פרטים, שומר קבצים מצורפים, ושומר על הכל מאורגן בגוגל שיטס. זה ידידותי למשתמש, מעשי, ומוכן לפתור בעיות מהעולם האמיתי.

📚 12 ימי DigitalOcean

זה מסמן את סיום סדרת ה-12 ימי DigitalOcean. במהלך 12 הימים האחרונים, בנינו שתי אפליקציות מעשיות, צעד אחר צעד. במהלך הדרך, השתמשת בכלים כמו פונקציות Serverless של DigitalOcean, פלטפורמת אפליקציות, אחסון אובייקטים Spaces, PostgreSQL, GenAI של DigitalOcean, Twilio, Google Sheets API, Postmark, PaperTrail, וResend. כל חלק התחבר יחד כדי ליצור משהו גדול יותר ממה שסכום חלקיו.

הנה סיכום מהיר של מה שבנית:

🎂 ימים 1–6: בנה שירות תזכורת ימי הולדת

אפליקציה זו עוקבת אחרי ימי הולדת ושולחת תזכורות SMS באופן אוטומטי. היא קלה, חסרת שרתים, וקלה לתחזוקה.

ביום 6, יש לך שירות אוטומטי לחלוטין רץ בענן. זה פשוט עובד.

📧 ימים 7–12: בנה מעבד קבלות בדוא"ל

אפליקציה זו מטפלת בקבלות שנשלחות בדוא"ל, מפיקה את הפרטים הדרושים ומסדרת הכל בדatabase.

עד יום 12, בנית כלי שלם שמטפל בקבלות מקצה לקצה.

מה שלמדת

  1. אחסון וניהול נתונים: השתמשת בPostgreSQL לאחסון נתונים מובנים ובGoogle Sheets לרישום נתונים קל לחלוקה.
  2. אוטומציה של זרימות עבודה: עם פונקציות של DigitalOcean וטריגרים מתוזמנים, אוטומטת תהליכים והפכת את האפליקציות שלך לפעול כמו שעון.
  3. הוספת אינטליגנציה לאפליקציות שלך: על ידי שילוב GenAI של DigitalOcean, הבאת חציית נתונים אינטליגנטית וארגון לזרימות העבודה שלך, והפכת את האפליקציות שלך לחכמות ויותר מסוגלות.
  4. ניהול קבצים בצורה מאובטחת: עבדת עם Spaces של DigitalOcean כדי לאחסן ולנהל קבצים בצורה מהימנה וסקלאבילית.
  5. שיפור אפליקציות עם APIs: APIs כמו Twilio, Postmark, וResend הביאו פונקציות כמו הודעות SMS, העברת מיילים, ודוא"ל אישור לאפליקציות שלך.
  6. תיקון באגים וניטור: בשימוש בכלים כמו Papertrail, למדת לתקן באגים ולנטר את היישומים שלך בצורה יעילה, כך שישארו רציפים.

מה הבא

זה רק ההתחלה – מה שלמדת כאן יכול להיות רלוונטי למגוון פרוייקטים אחרים. הנה כמה דרכים להמשיך:

  • הצטרף לשיחה ב-Discord של DigitalOcean כדי להתחבר למפתחים אחרים, לשתף את מה שבנית ולהשרא בדברים חדשים.
  • חקור עוד ב-ספריית ההדרכות שלנו לרעיונות ופרוייקטים נוספים.

אם תמשיך להתקדם, אשמח לראות מה אתה יוצר – אל תהסס לשתף את ההתקדמות או משוב איתי ב-טוויטר.

שמור על פשטות. בנה משהו שימושי. בנייה שמחה! 🚀

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