mirror of
https://github.com/containrrr/watchtower.git
synced 2025-12-14 06:06:38 +01:00
Send mails that correspond to RFC2045 with a base64 line limit of 76 characters.
This commit is contained in:
parent
28dff65282
commit
09f047ab8b
2 changed files with 30 additions and 1 deletions
|
|
@ -72,7 +72,12 @@ func (e *emailTypeNotifier) buildMessage(entries []*log.Entry) []byte {
|
||||||
for k, v := range header {
|
for k, v := range header {
|
||||||
message += fmt.Sprintf("%s: %s\r\n", k, v)
|
message += fmt.Sprintf("%s: %s\r\n", k, v)
|
||||||
}
|
}
|
||||||
message += "\r\n" + base64.StdEncoding.EncodeToString([]byte(body))
|
|
||||||
|
encodedBody := base64.StdEncoding.EncodeToString([]byte(body))
|
||||||
|
//RFC 2045 base64 encoding demands line no longer than 76 characters.
|
||||||
|
for _, line := range SplitSubN(encodedBody, 76) {
|
||||||
|
message += "\r\n" + line
|
||||||
|
}
|
||||||
|
|
||||||
return []byte(message)
|
return []byte(message)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
24
notifications/util.go
Normal file
24
notifications/util.go
Normal file
|
|
@ -0,0 +1,24 @@
|
||||||
|
package notifications
|
||||||
|
|
||||||
|
import "bytes"
|
||||||
|
|
||||||
|
// SplitSubN splits a string into a list of string with each having
|
||||||
|
// a maximum number of characters n
|
||||||
|
func SplitSubN(s string, n int) []string {
|
||||||
|
sub := ""
|
||||||
|
subs := []string{}
|
||||||
|
|
||||||
|
runes := bytes.Runes([]byte(s))
|
||||||
|
l := len(runes)
|
||||||
|
for i, r := range runes {
|
||||||
|
sub = sub + string(r)
|
||||||
|
if (i+1)%n == 0 {
|
||||||
|
subs = append(subs, sub)
|
||||||
|
sub = ""
|
||||||
|
} else if (i + 1) == l {
|
||||||
|
subs = append(subs, sub)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return subs
|
||||||
|
}
|
||||||
Loading…
Add table
Add a link
Reference in a new issue