במדריך הזה מוסבר איך להשתמש ב-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/* תואם לכל כתובות האימייל של האפליקציה.
רכיבי Mail Servlet פועלים בגרסה הנוכחית של האפליקציה ב-App Engine.
שליחה של הודעות נכנסות על סמך דפוסים
אם האפליקציה משתמשת בהתאמת תבניות, כדאי להשתמש בגישה מבוססת-מסננים על סמך קטעי הקוד הבאים.
Concrete handler
ה-handler הקונקרטי שלמעלה רשום באמצעות קטע הקוד הבא ב-web.xml:
הערה: אי אפשר להשתמש בהנחיות security-constraint במסננים. צריך להגדיר את מדיניות האבטחה ב-handler בדרך אחרת.
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 (שליחת אימייל).