במדריך הזה מוסבר איך להשתמש ב-Mail API כדי לקבל אימייל.
הודעות אימייל נשלחות לאפליקציה שלכם כבקשות HTTP. כדי לעבד הודעות אימייל נכנסות, צריך לשייך כתובות אימייל לסרוולטים בהגדרת האפליקציה, ואז לכלול את קוד הסרוולט באפליקציה. האימייל הנכנס יוצר בקשות HTTP שמועברות לסרוולטים המתאימים לצורך טיפול.
לפני שמתחילים
צריך לרשום את כתובות האימייל של השולחים כשולחים מורשים. למידע נוסף, אפשר לעיין במאמר בנושא מי יכול לשלוח אימייל.
הגדרת האפליקציה לקבלת אימייל
כשיוצרים אפליקציה חדשה, האפשרות לקבל אימייל מושבתת כברירת מחדל. אם לא תפעילו במפורש את האפשרות הזו, המערכת תתעלם מהודעות אימייל נכנסות שנשלחות לאפליקציה.
כדי להפעיל את שירות האימייל הנכנס, משנים את קובצי ההגדרות appengine-web.xml ו-web.xml:
הפעלת אימייל ב-appengine-web.xml
משנים את appengine-web.xml על ידי הוספת קטע inbound-services שמאפשר את שירות האימייל הנכנס:
הודעות אימייל נשלחות לאפליקציה שלכם כבקשות HTTP POST באמצעות כתובת ה-URL הבאה:
/_ah/mail/<ADDRESS>
כאשר <ADDRESS> היא כתובת אימייל מלאה, כולל שם הדומיין. שימו לב: גם אם האפליקציה שלכם נפרסה בדומיין מותאם אישית, היא לא יכולה לקבל אימיילים שנשלחים לכתובות בדומיין הזה.
הפעלת אימייל ב-web.xml
שינוי web.xml על ידי מיפוי כתובות URL של אימיילים לסרוולטים:
בקטעי הקוד שלמעלה, /_ah/mail/* תואם לכל כתובות האימייל של האפליקציה.
רכיבי servlet של אימייל פועלים בגרסה הנוכחית של האפליקציה ב-App Engine.
העברה של הודעות נכנסות על סמך דפוסים
אם האפליקציה משתמשת בהתאמת תבניות, כדאי להשתמש בגישה מבוססת-סינון על סמך קטעי הקוד הבאים.
Concrete handler
ה-handler הקונקרטי שלמעלה רשום באמצעות קטע הקוד הבא ב-web.xml:
הערה: אי אפשר להשתמש בהנחיות security-constraint במסננים. צריך להגדיר מדיניות אבטחה לטיפול בבקשות בדרך אחרת.
Abstract handler
טיפול באימייל נכנס
JavaMail API כולל את המחלקה MimeMessage שבה אפשר להשתמש כדי לנתח הודעות אימייל נכנסות. ל-MimeMessage יש constructor שמקבל java.io.InputStream וסשן JavaMail, שיכול להיות עם הגדרה ריקה.
יוצרים מכונת MimeMessage באופן הבא:
לאחר מכן, אפשר להשתמש בשיטות שונות כדי לנתח את אובייקט message:
- מתקשרים אל
getFrom()כדי להחזיר את השולח של ההודעה. - מתקשרים אל
getContentType()כדי לחלץ את סוג התוכן של ההודעה. השיטהgetContent()מחזירה אובייקט שמטמיע את הממשקMultipart. - מתקשרים אל
getCount()כדי לקבוע את מספר החלקים - מתקשרים אל
getBodyPart(int index)כדי להחזיר חלק גוף מסוים.
אחרי שמגדירים את האפליקציה לטיפול באימיילים נכנסים, אפשר להשתמש במסוף של שרת הפיתוח כדי לדמות הודעות אימייל נכנסות. מידע נוסף, כולל הוראות להפעלת שרת הפיתוח, זמין במאמר שרת הפיתוח ל-Java. אחרי שמפעילים את האפליקציה בשרת הפיתוח המקומי, אפשר לגשת אליה דרך כתובת ה-URL http://localhost:8888/_ah/admin/. אם לא משתמשים ביציאה שמוגדרת כברירת מחדל לשרת הפיתוח המקומי, צריך להחליף את הערך 8888 ביציאה שבה משתמשים.
בשרת הפיתוח, לוחצים על Inbound Mail (אימייל נכנס) בצד ימין, ממלאים את הטופס שמופיע ולוחצים על Send Email (שליחת אימייל).