使用Go

时间:2015-10-22 12:36:09

标签: go postmark

我尝试使用DropzoneJS实现文件上传器并使用Go编写后端(首次尝试使用该语言进行编程)。我正在尝试使用https://github.com/hjr265/postmark.go,这似乎是Go库的Postmarks推荐。

该应用程序由3个不同的处理程序组成,其中一个提供标题(下面的代码中的ApplicationID),用于标题。

第二个处理程序处理单个文件上传到服务器。这些文件在一个与ApplicationID同名的目录中组合在一起。

到目前为止一切运作良好。

最终处理程序遍历给定目录中的文件,并将它们添加到一个附件片段中。

我认为我能够做的是创建一个附件并将其添加到一个附件片段并将其传递给消息但是每当我测试这个时,我发送的电子邮件除了附件之外的所有内容。这是我提交处理程序的代码:

http.HandleFunc("/submission", func(w http.ResponseWriter, r *http.Request){

    client := postmark.Client{
        ApiKey: "SOME-POSTMARK-API-KEY",
        Secure: true,
    }
    fmt.Println(client)

    attachments := []postmark.Attachment{}

    switch r.Method {
        case "POST":
            appId := r.Header.Get("ApplicationID")

            files, _ := ioutil.ReadDir("/tmp/uploader/" + appId)
            for _, f := range files {
                fullpath := "/tmp/uploader/" + appId + "/" + string(f.Name())
                extension := filepath.Ext(fullpath)
                mimeType := mime.TypeByExtension(extension)
                upload, _ := os.Open(fullpath)
                attachment := postmark.Attachment{
                    Name: f.Name(),
                    Content: upload,
                    ContentType: mimeType,
                }
                attachments = append(attachments, attachment)
            }
    }

    res, err := client.Send(&postmark.Message{
        From: &mail.Address{
            Name:    "SENDER-NAME",
            Address: "sender@example.com",
        },
        To: []*mail.Address{
            {
                Name:    "RECIPIENT-NAME",
                Address: "recipient@example.com",
            },
        },
        Subject:  "Hooking up Postmark for sending email",
        TextBody: strings.NewReader("MESSAGE-BODY-AS-TEXT"),
        Attachments: attachments,
    })

    if err != nil {
        panic(err)
    }

    fmt.Printf("%#v\n", res)
})

这是我从Postmark回来的结果的一个例子:

 &postmark.Result{ErrorCode:0, Message:"OK", MessageID:"29fdf3da-ae5d-40c8-af92-c13e93fa6b69", SubmittedAt:"2015-10-22T07:39:17.2297478-04:00", To:"\"RECIPIENT-NAME\" <recipient@example.com>"}

我希望我犯了一个菜鸟错误,因为我正在使用这些附件,并且从根本上忽略了Go中的一些内容?

次要注意:由于我没有使用模板,我还原了添加模板的仓库中的提交,我不确定如何在没有指定模板的情况下发送

0 个答案:

没有答案