英文:
Go-Mail multiple recipients and attachment
问题
我正在尝试使用go-mail库创建一个电子邮件服务,并且已经使其工作。然而,我无法解决一些挑战。
我有一个用于表单数据的结构体-
type SendMailBody struct {
EmailTo []string `form:"sendTo"`
Subject string `form:"subject"`
Body string `form:"body"`
}
我发送到API的表单数据是
subject: 通知
sendTo:["abc@gmail.com", "xyz@gmail.com"]
body:您已收到通知
挑战-
-
如果我在"sendTo"中传递一个单独的电子邮件,它可以正常工作。但是在传递电子邮件列表后,它无法将电子邮件发送给收件人。我该如何解决这个问题?
-
如果我通过表单数据传递附件,如何将其附加到邮件中?文档中提到可以这样做:"m.Attach("/tmp/image.jpg")"。但是如果我通过API传递附件,我应该如何操作?
请指导我。
英文:
I am trying to make an email service using go-mail library and made it working. However there are few challenges that i am unable to solve
I have the struct for form data-
type SendMailBody struct {
EmailTo []string `form:"sendTo"`
Subject string `form:"subject"`
Body string `form:"body"`
}
The form data that i am sending to the API is
subject: Notification
sendTo:["abc@gmail.com", "xyz@gmail.com"]
body:You have been notified
Challenges-
-
If I pass a single email in "sendTO", It is working fine. But after passing the slice of emails, it is unable to send emails to the recepients. How can i make it work?
-
If I pass the attachment through Form data, how can I attach it with the mail. In documentation, it is mentioned that we can do it like that "m.Attach("/tmp/image.jpg")" . But how should i do it if i pass the attachment via form data in API
Please guide me through that.
答案1
得分: 0
需要一些更详细的信息才能提供帮助。特别是你使用的哪个 go-mail 库?
对于问题 1:
如果你指的是 https://github.com/wneessen/go-mail,使用 Msg.To()
应该可以正常处理多个收件人。请参考文档:https://pkg.go.dev/github.com/wneessen/go-mail#Msg.To
如果你指的是 https://github.com/go-mail/mail,该库中的 Message.SetAddressHeader()
(https://pkg.go.dev/github.com/go-mail/mail?utm_source=godoc#Message.SetAddressHeader)不支持多个收件人地址。你需要使用 Message.SetHeaders()
来设置 "To" 头部(https://pkg.go.dev/github.com/go-mail/mail?utm_source=godoc#Message.SetHeaders)。
对于问题 2:
这完全取决于你如何读取附件数据(同样也取决于你使用的 go-mail 库)。https://github.com/wneessen/go-mail 提供了不同的附件和嵌入文件的方式(例如从本地文件、从 embedFS、从 io.Reader...)。
英文:
Some more details are needed to help here. In particular which go-mail are you using?
For 1.)
If you refer to https://github.com/wneessen/go-mail, using Msg.To()
should work fine with multiple recipient. See the documentation at: https://pkg.go.dev/github.com/wneessen/go-mail#Msg.To
If you refer to https://github.com/go-mail/mail, there is Message.SetAddressHeader()
(https://pkg.go.dev/github.com/go-mail/mail?utm_source=godoc#Message.SetAddressHeader) which does not support multiple recipient addresses. You would need to use Message.SetHeaders()
for the "To"
-header instead (https://pkg.go.dev/github.com/go-mail/mail?utm_source=godoc#Message.SetHeaders).
For 2.)
This totally depends on how you read the attachment data (and again also on the go-mail library you are using). https://github.com/wneessen/go-mail has different ways of attaching and embedding files (i. e. from a local file, from embedFS, from an io.Reader...)
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论