Настройка App Engine для получения адресов электронной почты с идентификаторами в адресе - PullRequest
0 голосов
/ 21 апреля 2010

Я пишу приложение App Engine, которое должно получать электронные письма в этой форме: addcontact.someID@my-app.appspotmail.com (someID - это буквенно-цифровой идентификатор, который я генерирую).

У меня есть это в моем web.xml, я думаю, что это будет ловить электронные письма, которые начинаются с 'addcontact.':

  <servlet> 
    <servlet-name>addNewContactServlet</servlet-name> 
    <servlet-class>com.mycompany.server.AddNewContactServlet</servlet- 
class> 
  </servlet> 
  <servlet-mapping> 
    <servlet-name>addNewContactServlet</servlet-name> 
    <url-pattern>/_ah/mail/addcontact.*</url-pattern> 
  </servlet-mapping> 

Однако, как на моем компьютере разработчика, так и на серверах Google электронная почта не получено. На компьютере разработчика я получаю это сообщение (я получаю похожую ошибку в развернутом журнале)

Ошибка отправки сообщения ОШИБКА HTTP 404 Проблема с доступом / _ah / mail / addcontact.z1vnq3p2bvtfsuzbxg13sfon@myapp.appspotmail.com. Причина: NOT_FOUND

Я могу получать электронную почту на полностью указанные адреса или когда я использую / _ah / mail / * Документация Google заставила меня поверить, что в web.xml можно включить частичные адреса электронной почты. Я не правильно использую подстановочный знак? Связан ли период с этим? Можно ли это как-то сделать?

Причина, по которой я думаю, что это должно работать, заключается в документации Google по адресу: http://code.google.com/appengine/docs/java/mail/receiving.html

В нем есть файл примера web.xml:

<servlet>
  <servlet-name>handleowner</servlet-name>
  <servlet-class>HandleOwner</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>handleowner</servlet-name>
  <url-pattern>/_ah/mail/owner*</url-pattern>
</servlet-mapping>
<servlet>
  <servlet-name>handlesupport</servlet-name>
  <servlet-class>HandleSupport</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>handleowner</servlet-name>
  <url-pattern>/_ah/mail/support*</url-pattern>
</servlet-mapping>
<servlet>
  <servlet-name>catchallhandler</servlet-name>
  <servlet-class>MailCatchallServlet</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>catchallhandler</servlet-name>
  <url-pattern>/_ah/mail/*</url-pattern>
</servlet-mapping>
<security-constraint>
  <web-resource-collection>
    <url-pattern>/_ah/mail/*</url-pattern>
  </web-resource-collection>
  <auth-constraint>
    <role-name>admin</role-name>
  </auth-constraint>
</security-constraint>

Похоже, что адреса электронной почты поддержки и владельца подстановочные, чтобы соответствовать любому, начинающемуся с этого адреса.

1 Ответ

0 голосов
/ 22 апреля 2010

Это должно работать. Вы уверены, что это не ваш обработчик, возвращающий 404? Я хотел бы предложить несколько вещей, чтобы выяснить источник проблемы:

  1. Установите обработчик перехвата для / _ah / mail / * и убедитесь, что он работает
  2. Если это так, установите его для более простого префикса или точного адреса.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...