Jelajahi Sumber

Use interface io.Writer instead of struct bytes.Buffer (#73)

Grachev Mikhail 6 tahun lalu
induk
melakukan
c38ce493f9
1 mengubah file dengan 6 tambahan dan 3 penghapusan
  1. 6 3
      email.go

+ 6 - 3
email.go

@@ -296,7 +296,7 @@ func (e *Email) msgHeaders() (textproto.MIMEHeader, error) {
 	return res, nil
 }
 
-func writeMessage(buff *bytes.Buffer, msg []byte, multipart bool, mediaType string, w *multipart.Writer) error {
+func writeMessage(buff io.Writer, msg []byte, multipart bool, mediaType string, w *multipart.Writer) error {
 	if multipart {
 		header := textproto.MIMEHeader{
 			"Content-Type":              {mediaType + "; charset=UTF-8"},
@@ -347,7 +347,10 @@ func (e *Email) Bytes() ([]byte, error) {
 		headers.Set("Content-Transfer-Encoding", "quoted-printable")
 	}
 	headerToBytes(buff, headers)
-	io.WriteString(buff, "\r\n")
+	_, err = io.WriteString(buff, "\r\n")
+	if err != nil {
+		return nil, err
+	}
 
 	// Check to see if there is a Text or HTML field
 	if len(e.Text) > 0 || len(e.HTML) > 0 {
@@ -556,7 +559,7 @@ func base64Wrap(w io.Writer, b []byte) {
 
 // headerToBytes renders "header" to "buff". If there are multiple values for a
 // field, multiple "Field: value\r\n" lines will be emitted.
-func headerToBytes(buff *bytes.Buffer, header textproto.MIMEHeader) {
+func headerToBytes(buff io.Writer, header textproto.MIMEHeader) {
 	for field, vals := range header {
 		for _, subval := range vals {
 			// bytes.Buffer.Write() never returns an error.