Menerima Notifikasi Email Tidak Terkirim

Untuk menerima notifikasi email tidak terkirim, Anda harus mengonfigurasi aplikasi untuk mengaktifkan notifikasi tidak terkirim dan harus menangani notifikasi masuk di aplikasi Anda.

Mengonfigurasi aplikasi untuk notifikasi email tidak terkirim

Secara default, aplikasi tidak menerima notifikasi email tidak terkirim untuk email yang tidak dapat dikirimkan. Untuk mengaktifkan layanan notifikasi tidak terkirim yang masuk, Anda harus mengubah file konfigurasi appengine-web.xml dan web.xml pada aplikasi Anda.

Ubah appengine-web.xml dengan menambahkan bagian inbound-services untuk mengaktifkan layanan notifikasi tidak terkirim yang masuk:

<inbound-services>
  <!-- Used to handle incoming mail. -->
  <service>mail</service>
  <!-- Used to handle bounced mail notifications. -->
  <service>mail_bounce</service>
</inbound-services>

Ubah web.xml dengan memetakan URL notifikasi tidak terkirim /_ah/bounce ke servlet penanganan notifikasi tidak terkirim, sebagai berikut:

<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>

Menangani Notifikasi Tidak Terkirim

JavaMail API menyertakan class BounceNotificationParser, yang Anda gunakan untuk mengurai notifikasi tidak terkirim yang masuk, seperti ditampilkan di sini:

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