Receiving Bounce Notification

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.xml by adding an inbound-services section to enable the incoming bounce service:

 <inbound-services>  
<!--  
Used  
to  
handle  
incoming  
mail.  
-->  
<service>mail</service>  
<!--  
Used  
to  
handle  
bounced  
mail  
notifications.  
-->  
<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:

  import 
  
 com.google.appengine.api.mail. BounceNotification 
 
 ; 
 import 
  
 com.google.appengine.api.mail. BounceNotificationParser 
 
 ; 
 import 
  
 java.io.IOException 
 ; 
 import 
  
 java.util.logging.Logger 
 ; 
 import 
  
 javax.mail.MessagingException 
 ; 
 import 
  
 javax.servlet.http.HttpServlet 
 ; 
 import 
  
 javax.servlet.http.HttpServletRequest 
 ; 
 import 
  
 javax.servlet.http.HttpServletResponse 
 ; 
 public 
  
 class 
 BounceHandlerServlet 
  
 extends 
  
 HttpServlet 
  
 { 
  
 private 
  
 static 
  
 final 
  
 Logger 
  
 log 
  
 = 
  
 Logger 
 . 
 getLogger 
 ( 
 BounceHandlerServlet 
 . 
 class 
 . 
 getName 
 ()); 
  
 @Override 
  
 public 
  
 void 
  
 doPost 
 ( 
 HttpServletRequest 
  
 req 
 , 
  
 HttpServletResponse 
  
 resp 
 ) 
  
 throws 
  
 IOException 
  
 { 
  
 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 
  
 ( 
 MessagingException 
  
 e 
 ) 
  
 { 
  
 // ... 
  
 } 
  
 } 
 } 
 
Design a Mobile Site
View Site in Mobile | Classic
Share by: