有时由于用户端输入错误,邮件反弹而未到达收件人。 (从谷歌应用引擎发送。)
如何检测此类电子邮件?
编辑: 可能我在我的问题中并不清楚:
我想知道我发送了哪些邮件是返回的邮件(这样我可以提醒用户或删除电子邮件ID)。这与电子邮件反弹的工作方式有关。通常退回邮件与发送的邮件不完全相同但信息不同,是否有任何特定的标题或某些东西可以知道哪个电子邮件ID是什么? ...我想在写这些内容时我已经弄明白了,我保留这个问题所以它可能对某人有所帮助。
我只需从base64encodedrecipientemailaddress@myapp.appspot.com发送邮件并创建邮件接收处理程序。 :)
还有一个问题:app-engine(或任何邮件服务器)允许电子邮件地址的最大长度是多少?
答案 0 :(得分:3)
Google实际上已经通过HTTP请求添加了a method for receiving bounced messages。它需要添加到您的app.yaml:
inbound_services:
- mail_bounce
每次收到退回时,这会导致请求点击/_ah/bounce
。然后,您可以通过为其添加处理程序来处理退回。有关如何从这些请求中收集其他信息的更多详细信息,请参阅有关处理退回通知的there部分。
答案 1 :(得分:2)
可悲的是,这是不可能的。
GAE会自动为您的电子邮件添加“Return-Path”标题。退回的邮件将发送到此标头标识的地址。您无法修改此标头的值。
有关详细信息,请参阅http://code.google.com/p/googleappengine/issues/detail?id=1800。
答案 2 :(得分:1)
使用您的某个应用的地址作为该地址的发件人地址(anything@yourapp.appspotmail.com)和register a handler。然后,您可以拦截和解释任何回复(自动或其他)。
答案 3 :(得分:0)
最简单的方法是通过base64或simiar编码对电子邮件地址进行编码,并将其作为地址的前缀。
来自something@myapp.appspotmail.com的所有地址都是来自gae的有效电子邮件地址。
只需创建一个邮件接收处理程序。解码from字符串并获取您最初向其发送电子邮件的电子邮件地址。
遗憾的是,本地部分允许的最大长度为64个字符。在这种情况下,将电子邮件地址存储在数据存储区中并使用其密钥作为电子邮件的本地部分可以是一个选项。