如何在laravel PHP中为入站mailgun电子邮件编写HTTP POST处理程序?

时间:2018-08-22 07:07:46

标签: php laravel email mailgun

http://documentation.mailgun.net/quickstart.html包含Django中HTTP处理程序的一些示例代码:

# Handler for HTTP POST to http://myhost.com/messages for the route defined above
def on_incoming_message(request):
if request.method == 'POST':
 sender    = request.POST.get('sender')
 recipient = request.POST.get('recipient')
 subject   = request.POST.get('subject', '')

 body_plain = request.POST.get('body-plain', '')
 body_without_quotes = request.POST.get('stripped-text', '')
 # note: other MIME headers are also posted here...

 # attachments:
 for key in request.FILES:
     file = request.FILES[key]
     # do something with the file

# Returned text is ignored but HTTP status code matters:
# Mailgun wants to see 2xx, otherwise it will make another attempt in 5 
minutes
return HttpResponse('OK')

PHP等价于什么?

我发现了this问题,这给我们留下了以下信息:

  

对于需要引用的其他任何人,只需调用$ _POST ['value']并   确保返回200 OK标头。

在我的web.php中,我认为它应该是这样的后路由:

Route::post('/messages', 'MessageController@store');

但是在使用post时,出现MethodNotAllowedHttpException错误。

1 个答案:

答案 0 :(得分:1)

我的第一个猜测是VerifyCsrfToken中间件,如果您在web组上运行它,它将导致问题。将其移至api组中,查看异常是否消失。然后从控制器方法返回状态为200的响应:

return new \Illuminate\Http\Response;

默认值将返回状态为200的空响应。 别忘了在mailgun控制面板中更新端点(前缀为api组,您的路由将为/api/messages)。