Java 8 has reached end of support and will be deprecated on January 31, 2026. After deprecation, you won't be able to deploy Java 8 applications, even if your organization previously used an organization policy to re-enable deployments of legacy runtimes. Your existing Java 8 applications will continue to run and receive traffic after their deprecation date. We recommend that you migrate to the latest supported version of Java.

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.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){
// ...
}
}
}

Except as otherwise noted, the content of this page is licensed under the Creative Commons Attribution 4.0 License, and code samples are licensed under the Apache 2.0 License. For details, see the Google Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2025年12月09日 UTC.