golangを使用してmailgunからメールの添付ファイルを受信する方法を見つけようとしています。Pythonの例https://documentation.mailgun.com/en/latest/quickstart-receive.htmlのみを提供します。
# 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')
Goでこの部分をどのように処理する必要がありますか、またはこの「ファイル」のタイプは何ですか?
# attachments:
for key in request.FILES:
file = request.FILES[key]
ドメインのルーティング設定でコールバックのサンプルリクエストをMailgunに送信させることができます:https ://app.mailgun.com/app/routes 。簡単な概要については、http://bin.mailgun.netにビンを作成し、そのURLを入力してください。
「転送」アクションのリクエストにはmultipart / form-data本文が含まれていることがわかるので、http.Request.FormFileを使用して添付ファイルにアクセスします。
http.HandleFunc("/callback", func(w http.ResponseWriter, r *http.Request) {
// r.FormFile and r.FormValue will call ParseMultipartForm
// automatically if necessary, but they ignore any errors. For
// robustness we do it ourselves.
if err := r.ParseMultipartForm(10 << 20); err != nil {
http.Error(w, err.Error(), 500)
return
}
// The "attachment-count" field reports how many attachments there are.
n, _ := strconv.Atoi(r.FormValue("attachment-count"))
// The file fields are then named "attachment-1", "attachment-2", ..., "attachment-n".
for i := 1; i <= n; i++ {
fieldName := fmt.Sprintf("attachment-%d", i)
file, header, err := r.FormFile(fieldName)
if err != nil {
http.Error(w, err.Error(), 500)
return
}
fmt.Printf("%s (%d bytes)\n", header.Filename, header.Size)
var _ = file // call file.Read() to read the file contents
}
})
Mailgunのテストペイロードの場合、出力は次のようになります。
crabby.gif (2785 bytes)
attached_файл.txt (32 bytes)
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加