Go

Parse Webhook

SendGridのInbound Parse Webhookと連携する場合、SendGrid Go SDKの利用を推奨します。

以下の例は、address@email.sendgrid.biz宛の全てのメールをhttp://sendgrid.biz/uploadにPOSTします。

Parse API settings pageで設定するパラメータは次のようになります。

1
Hostname: email.sendgrid.biz
1
URL: http://sendgrid.biz/upload

このシナリオをテストするために、以下のコードを作成して、example@example.comにメールを送信します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
package main

import (
        "fmt"
        "net/http"
        "io/ioutil"
        "log"
        "github.com/sendgrid/sendgrid-go"

)

func Parse (w http.ResponseWriter, req *http.Request) {
        //Get Email Values
        to := req.FormValue("from")
        subject := req.FormValue("subject")
        body:= req.FormValue("text")

        //Get Uploaded File
        file, handler, err := req.FormFile("attachment1")
        if err != nil {
                fmt.Println(err)
        }
        data, err := ioutil.ReadAll(file)
        if err != nil {
                fmt.Println(err)
        }
        err = ioutil.WriteFile(handler.Filename, data, 0777)
        if err != nil {
                fmt.Println(err)
        }
}

func main() {
        http.HandleFunc("/upload", Parse)
        err := http.ListenAndServe(":3000", nil)
        if err != nil {
                log.Fatal("ListenAndServe: ", err)
        }