设置App Engine以接收地址中带有ID的电子邮件地址

时间:2010-04-21 17:40:13

标签: google-app-engine

我正在编写一个App Engine应用程序,它应该以这种形式接收电子邮件: addcontact.someID@my-app.appspotmail.com(someID是我生成的字母数字ID。)

我在我的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> 

但是,我的开发机器和谷歌服务器上的电子邮件都没有 接收。在开发机器上我收到此消息(我得到了类似的错误 在已部署的日志中)

消息发送失败 HTTP错误404 访问/ _ah / mail /时遇到问题 addcontact.z1vnq3p2bvtfsuzbxg13sfon@myapp.appspotmail.com。 原因:     NOT_FOUND

我可以在完全指定的地址或使用/ _ah / mail / *时收到电子邮件 谷歌文档让我相信可以在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 :(得分:0)

这应该有效。你确定这不是你的经纪人返回404吗?我建议尝试一些方法来找出问题的根源:

  1. 为/ _ah / mail / *设置一个catchall处理程序并检查它是否有效
  2. 如果是,请设置一个用于更简单的前缀或确切地址。