【发布时间】:2017-11-29 11:22:30
【问题描述】:
我正在尝试将用于发送电子邮件的 mailgun curl 命令转换为 golang。这是原始卷曲:
curl -s --user 'api:key-3ax6xnjp29jd6fds4gc373sgvjxteol0' \
https://api.mailgun.net/v3/samples.mailgun.org/messages \
-F from='Excited User <excited@samples.mailgun.org>' \
-F to='devs@mailgun.net' \
-F subject='Hello' \
-F text='Testing some Mailgun awesomeness!'
更新代码:
var b bytes.Buffer
w := multipart.NewWriter(&b)
fw, err := w.CreateFormField("from")
if err != nil {
log.Println(err)
}
_, err = fw.Write([]byte("Excited User <excited@samples.mailgun.org>"))
if err != nil {
log.Println(err)
}
fw, err = w.CreateFormField("to")
if err != nil {
log.Println(err)
}
_, err = fw.Write([]byte("devs@mailgun.net"))
if err != nil {
log.Println(err)
}
fw, err = w.CreateFormField("subject")
if err != nil {
log.Println(err)
}
_, err = fw.Write([]byte("Hello"))
if err != nil {
log.Println(err)
}
fw, err = w.CreateFormField("text")
if err != nil {
log.Println(err)
}
_, err = fw.Write([]byte("Testing some Mailgun awesomeness!"))
if err != nil {
log.Println(err)
}
w.Close()
req, err := http.NewRequest("POST", "https://api.mailgun.net/v3/samples.mailgun.org/messages", &b)
if err != nil {
log.Println(err)
}
req.SetBasicAuth("api", "key-3ax6xnjp29jd6fds4gc373sgvjxteol0")
req.Header.Add("Content-Type", w.FormDataContentType())
// req.Header.Add("Content-Type", "application/x-www-form-urlencoded")
resp, err := http.DefaultClient.Do(req)
if err != nil {
log.Println(err)
}
defer resp.Body.Close()
fmt.Printf("Resp: %s\n", resp)
我当然已将api:key-3ax6xnjp29jd6fds4gc373sgvjxteol0、https://api.mailgun.net/v3/samples.mailgun.org/messages 和devs@mailgun.net 更改为我自己的 API 和电子邮件地址,但它似乎不起作用..
有人可以看看我可能做错了什么吗?
【问题讨论】:
-
对于发送邮件(而不是学习
net/http),您可能需要 Mailgun 的 Go SDK:github.com/mailgun/mailgun-go -
@twotwotwo 是的,谢谢,我之前看过这个包,但我觉得学习如何转换 curl 命令会很好,既因为将来使用,也因为包似乎要求不同信息
标签: go