Explorar el Código

Safely concatenate addresses.

Formerly, appending directly to e.Bcc might have made unintended changes
to its underlying array.
Jed Denlea hace 11 años
padre
commit
7ec213d6e7
Se han modificado 1 ficheros con 4 adiciones y 3 borrados
  1. 4 3
      email.go

+ 4 - 3
email.go

@@ -166,12 +166,13 @@ func (e *Email) Bytes() ([]byte, error) {
 // Send an email using the given host and SMTP auth (optional), returns any error thrown by smtp.SendMail
 // This function merges the To, Cc, and Bcc fields and calls the smtp.SendMail function using the Email.Bytes() output as the message
 func (e *Email) Send(addr string, a smtp.Auth) error {
+	// Merge the To, Cc, and Bcc fields
+	to := make([]string, 0, len(e.To)+len(e.Cc)+len(e.Bcc))
+	to = append(append(append(to, e.To...), e.Cc...), e.Bcc...)
 	// Check to make sure there is at least one recipient and one "From" address
-	if e.From == "" || (len(e.To) == 0 && len(e.Cc) == 0 && len(e.Bcc) == 0) {
+	if e.From == "" || len(to) == 0 {
 		return errors.New("Must specify at least one From address and one To address")
 	}
-	// Merge the To, Cc, and Bcc fields
-	to := append(append(e.To, e.Cc...), e.Bcc...)
 	from, err := mail.ParseAddress(e.From)
 	if err != nil {
 		return err