Closed marcalj closed 9 years ago
You can already do it by using getSendMailFunc
and implementing your own email-sending function.
But I can also add new methods so you can do something like that:
c := mailer.Connect()
defer c.Close()
for _, msg := range list {
if err := c.Send(msg); err != nil {
panic(err)
}
}
Would that fits your need?
Sorry, I wasn't able to play with your library until now! :)
Yep, this would be a great addition to this package! I'll try to implement a custom email-sending function. Not sure when btw...
Thanks!!!
+1
I will do it for Gomail v2 (which should be released in August as Go 1.5). In the meantime you can already do it by implementing your own email-sending function and using SetSendMail
.
Gomail v2 will handle sending many mails on one connection. You can already try the unstable version and tell me if it is fine:
package main
import (
"fmt"
"gopkg.in/gomail.v2-unstable"
)
func main() {
messages := make([]*gomail.Message, 10)
for i := 0; i < len(messages); i++ {
m := gomail.NewMessage()
m.SetHeader("From", "from@example.com")
m.SetHeader("To", "to@example.com")
m.SetHeader("Subject", fmt.Sprintf("Test %d", i))
m.SetBody("text/html", fmt.Sprintf("Test %d", i))
messages[i] = m
}
d := gomail.NewPlainDialer("smtp.example.com", "user", "123456", 587)
if err := d.DialAndSend(messages...); err != nil {
panic(err)
}
}
Awesome! :+1:
I made a quick review of your code and I think you open close a connection for each
Send
(https://github.com/go-gomail/gomail/blob/master/send.go#L22).I want to implement a job to send emails from a queue in bulk, but reusing the connection to be as more efficient as possible.
I miss something from your API?
Thanks!