Receiving Bounce Notification
Stay organized with collections
Save and categorize content based on your preferences.
To receive email bounce notifications, you need to configure your app to enable bounce notification and you need to handle the incoming notification in your app.
Configuring your application for email bounce notification
By default, applications do not receive bounce notifications for email that
could not be delivered. To enable the incoming bounce notification service, you
must modify your application appengine-web.xml and web.xml configuration
files.
Modify appengine-web.xmlby adding an inbound-services section to enable the
incoming bounce service:
<inbound-services>
<!--Usedtohandleincomingmail.-->
<service>mail</service>
<!--Usedtohandlebouncedmailnotifications.-->
<service>mail_bounce</service>
</inbound-services>Modify web.xml by mapping the bounce URL /_ah/bounce to your bounce
handling servlet, as follows:
<servlet>
<servlet-name>bouncehandler</servlet-name>
<servlet-class>com.example.appengine.mail.BounceHandlerServlet</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>bouncehandler</servlet-name>
<url-pattern>/_ah/bounce</url-pattern>
</servlet-mapping>
<security-constraint>
<web-resource-collection>
<web-resource-name>bounce</web-resource-name>
<url-pattern>/_ah/bounce</url-pattern>
</web-resource-collection>
<auth-constraint>
<role-name>admin</role-name>
</auth-constraint>
</security-constraint>Handling Bounce Notifications
The JavaMail API includes the BounceNotificationParser class, which you use to parse incoming bounce notifications, as shown here:
importcom.google.appengine.api.mail.BounceNotification ;
importcom.google.appengine.api.mail.BounceNotificationParser ;
importjava.io.IOException;
importjava.util.logging.Logger;
importjavax.mail.MessagingException;
importjavax.servlet.http.HttpServlet;
importjavax.servlet.http.HttpServletRequest;
importjavax.servlet.http.HttpServletResponse;
publicclass BounceHandlerServletextendsHttpServlet{
privatestaticfinalLoggerlog=Logger.getLogger(BounceHandlerServlet.class.getName());
@Override
publicvoiddoPost(HttpServletRequestreq,HttpServletResponseresp)throwsIOException{
try{
BounceNotification bounce=BounceNotificationParser .parse(req);
log.warning("Bounced email notification.");
// The following data is available in a BounceNotification object
// bounce.getOriginal().getFrom()
// bounce.getOriginal().getTo()
// bounce.getOriginal().getSubject()
// bounce.getOriginal().getText()
// bounce.getNotification().getFrom()
// bounce.getNotification().getTo()
// bounce.getNotification().getSubject()
// bounce.getNotification().getText()
// ...
}catch(MessagingExceptione){
// ...
}
}
}