כדי לשפר את אבטחת האימייל ולהבטיח מסירה אמינה של אימיילים בכמויות גדולות, מומלץ לעבור מ-Mail API מדור קודם לשירות של ספק אימייל רגיל מצד שלישי שמשתמש ב-Simple Mail Transfer Protocol (SMTP), כמו SendGrid, Mailgun או Mailjet.
במדריך הזה מתואר תהליך ההעברה של שירותי אימייל לדואר יוצא מ-Mail API לשירות אימייל שמבוסס על SMTP. אפשר להשתמש בהוראות האלה כדי לעבור לכל ספק אימייל של צד שלישי שמבוסס על SMTP, או להשתמש בסביבת זמן ריצה נתמכת אחרת. במדריך הזה לא מפורטים שלבים להעברת הודעות לדואר נכנס שמשתמשות בחלופה של צד שלישי.
תקן ה-SMTP מציע את היתרונות הבאים בהשוואה ל-Mail API מדור קודם של App Engine:
שירותים שמבוססים על SMTP משפרים את מסירת האימיילים כי הם מקטינים את הסיכוי שהאימיילים יסומנו כספאם.
בשירותים שמבוססים על SMTP, אפשר לגשת לדוחות מפורטים של ניתוח נתונים על פתיחות של אימיילים, קליקים והחזרות. הדוחות האלה מספקים מידע שימושי על האינטראקציה של המשתמשים עם האימיילים שלכם.
יש לכם שליטה מלאה על המוניטין של השולח ועל אימות האימייל.
מגבלות השליחה היומיות גבוהות יותר בהשוואה ל-Mail API מדור קודם, ויש גישה לתכונות מתקדמות כמו בדיקות A/B, פילוח ותבניות.
סקירה כללית של תהליך המיגרציה
תהליך ההעברה כולל את השלבים הבאים:
- מגדירים את שירות האימייל מבוסס ה-SMTP כדי לקבל את פרטי הכניסה ל-SMTP.
- מאמתים את הזהות של השולח כדי לבצע אימות באמצעות הדומיין או כתובת האימייל.
- מגדירים את קובצי המקור עם פרטי הכניסה ל-SMTP ושיטת השליחה, ואז פורסים את האפליקציה.
- בודקים את האפליקציה כדי לוודא שפונקציית האימייל פועלת.
הגדרת שירות אימייל מבוסס SMTP
מגדירים חשבון אצל ספק אימייל רגיל של צד שלישי שמשתמש ב-SMTP, כמו SendGrid, Mailgun או Mailjet, ומקבלים מהספק שבחרתם את הפרטים הבאים:
מארח SMTP: כתובת שרת ה-SMTP שמשמשת לשליחת דואר. לדוגמה,
smtp.sendgrid.netאוexample.mailjet.com.יציאה: מספר היציאה של החיבור. לדוגמה,
587להצפנת TLS.שם משתמש: שם המשתמש שלכם לכניסה ל-SMTP בחשבון.
סיסמה או מפתח API: הסיסמה של החשבון או מפתח API, שמשמש כסיסמה לחיבור SMTP. אצל ספקים מסוימים, כמו SendGrid, שם המשתמש הוא ערך קבוע כמו
apikey, ומפתח ה-API משמש כסיסמה.
אימות הזהות של השולח
כדי למנוע ספאם, כל שירותי האימייל דורשים לאמת שאתם הבעלים של כתובת האימייל או הדומיין שמהם אתם שולחים אימיילים. בשלב הזה צריך בדרך כלל להוסיף פרטי DNS ספציפיים, כמו רשומות CNAME, לדף ניהול ה-DNS של מארח הדומיין.
כדי להמשיך בהגדרת האפליקציה, צריך לפעול לפי ההוראות של הספק כדי לאמת את זהות השולח.
כדי להוסיף רשומות DNS למארח הדומיין, פועלים לפי השלבים הבאים:
- נכנסים לשירות של ספק ה-DNS.
- נכנסים לדף הניהול של ה-DNS לדומיין.
מוסיפים את רשומות ה-CNAME בדיוק כמו שהן מופיעות אצל ספק שירותי האימייל. לכל רשומה, מבצעים את הפעולות הבאות:
- בשדה Name (שם) או Host (מארח), מזינים את פרטי המארח.
- בשדה נקודות או ערך, מזינים את הערך.
יכול להיות שיעברו כמה שעות עד שהשינויים ב-DNS ייכנסו לתוקף. אם האימות נכשל, צריך להמתין קצת ולנסות שוב.
הגדרת קובצי המקור
כדי לכלול את הפונקציונליות של SMTP, פועלים לפי השלבים הבאים:
מריצים את הפקודה הבאה כדי להתקין את Maven:
sudo apt install mavenכדי לעבור לשירות SMTP, מוסיפים את הקוד הבא לקובץ
pom.xml:מוסיפים את הגרסה של התלות
appengine-api-1.0-sdk:<dependency> <groupId>com.google.appengine</groupId> <artifactId>appengine-api-1.0-sdk</artifactId> <version>5.0.0</version> </dependency>מעדכנים את מזהה הפרויקט:
<configuration> <deploy.projectId>PROJECT-ID</deploy.projectId> <deploy.version>1</deploy.version> </configuration>מחליפים את PROJECT-ID במזהה הפרויקט ב- Google Cloud .
מוסיפים את משתני הסביבה הבאים לקובץ
appengine-web.xmlכדי לכלול את הגדרות שולח ה-SMTP:... <runtime>RUNTIME</runtime> <service>default</service> <threadsafe>true</threadsafe> <app-engine-apis>true</app-engine-apis> <env-variables> <!-- This is the master switch to enable the SMTP service.--> <env-var name="APPENGINE_USE_SMTP_MAIL_SERVICE" value="true" /> <!-- SMTP Server Configuration --> <!-- The server address from your mail provider.--> <env-var name="APPENGINE_SMTP_HOST" value="SMTP_HOST" /> <!-- The recommended port for TLS connections. --> <env-var name="APPENGINE_SMTP_PORT" value="587" /> <!-- The username for your SMTP login. --> <env-var name="APPENGINE_SMTP_USER" value="SMTP_USER" /> <!-- The API key or password --> <env-var name="APPENGINE_SMTP_PASSWORD" value="SMTP_PASSWORD" /> <!-- Use TLS for a secure connection. --> <env-var name="APPENGINE_SMTP_USE_TLS" value="true" /> </env-variables> ... </appengine-web-app>מחליפים את מה שכתוב בשדות הבאים:
- RUNTIME: גרסת Java runtime נתמכת.
- SMTP_HOST: כתובת המארח של SMTP. לדוגמה,
smtp.sendgrid.netאוexample.mailjet.com. - SMTP_USER: שם המשתמש שלכם להתחברות ל-SMTP. לדוגמה,
apiKey. - SMTP_PASSWORD: הסיסמה או מפתח ה-API שקיבלתם מספק האימייל של הצד השלישי. כדי לשפר את האבטחה, מומלץ להשתמש ב-Secret Manager כדי לאחסן את מפתח ה-API במקום להציב אותו בקובץ
appengine-web.xml.
מריצים את הפקודה הבאה כדי לפרוס את האפליקציה:
mvn package appengine:deploy
בדיקת האפליקציה
ההעברה הצליחה אם אתם מצליחים לפרוס את האפליקציה ללא שגיאות. כדי לוודא ששירות הדואר שלכם פועל, פועלים לפי השלבים הבאים:
- מפעילים את החלק באפליקציה ששולח אימייל.
- בודקים את הכלי Logs Explorer כדי לוודא שאין שגיאות שקשורות לקריאות ל-API או לניסיון החיבור ל-SMTP.
- נכנסים לחשבון אצל ספק האימייל של הצד השלישי (למשל, Mailgun, Mailjet, SendGrid) ובודקים את פיד הפעילות, היומנים או לוח הבקרה של המסירה. האימייל לבדיקה אמור להופיע בפיד עם סטטוס מסירה שמסומן כ-
Processed,Deliveredאו דומה.