go-gomail / gomail

The best way to send emails in Go.
MIT License
4.3k stars 570 forks source link

add SetBoundary(boundary string) method #109

Open vodolaz095 opened 6 years ago

vodolaz095 commented 6 years ago

This method is used to manually set mime boundary string. If we don't call this method, the default behaviour is used - aka boundary is generated by https://godoc.org/mime/multipart package. Also i have added unit tests to ensure it works as expected. And all old unit tests are passing.

Reason i want this method to be present, is because i have to deal with legacy report processing java application, and it hangs sometimes, when i send messages generated by your package. As far as i understand how this java dinosaur works, it throws errors because boundary generated is 30 bytes long.

https://golang.org/src/mime/multipart/writer.go#L78

func randomBoundary() string {

    var buf [30]byte

    _, err := io.ReadFull(rand.Reader, buf[:])

    if err != nil {

        panic(err)

    }

    return fmt.Sprintf("%x", buf[:])

}

And it seems too big for java dinosaur code. Or maybe badly written regex in it... hard to say. But if i could set boundary manually, you will make my day! thanks

pedromorgan commented 6 years ago

Please check https://github.com/go-gomail/gomail/issues/108

vodolaz095 commented 6 years ago

and what? you propose to remake pull request to http://github.com/go-mail/mail?

pedromorgan commented 6 years ago

I am just pointing out that any PR's here wont go anywhere atmo, unfortunately see #104. There are a few forks, but the one above seems to have merged some of the outstanding PR's from this repos.

ivy commented 6 years ago

@vodolaz095 Your change looks good to me. I'd definitely like to merge it into go-mail/mail which is actively maintained.