Fix santa bug, email subject encoding, closes #65
This commit is contained in:
		
							parent
							
								
									9a0f1f22b8
								
							
						
					
					
						commit
						ec7e58a6a2
					
				
					 2 changed files with 20 additions and 17 deletions
				
			
		|  | @ -5,6 +5,7 @@ import ( | ||||||
| 	"encoding/json" | 	"encoding/json" | ||||||
| 	"fmt" | 	"fmt" | ||||||
| 	"heckel.io/ntfy/util" | 	"heckel.io/ntfy/util" | ||||||
|  | 	"mime" | ||||||
| 	"net" | 	"net" | ||||||
| 	"net/smtp" | 	"net/smtp" | ||||||
| 	"strings" | 	"strings" | ||||||
|  | @ -28,6 +29,7 @@ func (s *smtpMailer) Send(senderIP, to string, m *message) error { | ||||||
| 	if err != nil { | 	if err != nil { | ||||||
| 		return err | 		return err | ||||||
| 	} | 	} | ||||||
|  | 	println(message) | ||||||
| 	auth := smtp.PlainAuth("", s.config.SMTPUser, s.config.SMTPPass, host) | 	auth := smtp.PlainAuth("", s.config.SMTPUser, s.config.SMTPPass, host) | ||||||
| 	return smtp.SendMail(s.config.SMTPAddr, auth, s.config.SMTPFrom, []string{to}, []byte(message)) | 	return smtp.SendMail(s.config.SMTPAddr, auth, s.config.SMTPFrom, []string{to}, []byte(message)) | ||||||
| } | } | ||||||
|  | @ -66,10 +68,11 @@ func formatMail(baseURL, senderIP, from, to string, m *message) (string, error) | ||||||
| 	if trailer != "" { | 	if trailer != "" { | ||||||
| 		message += "\n\n" + trailer | 		message += "\n\n" + trailer | ||||||
| 	} | 	} | ||||||
| 	body := `Content-Type: text/plain; charset="utf-8" | 	subject = mime.BEncoding.Encode("utf-8", subject) | ||||||
| From: "{shortTopicURL}" <{from}> | 	body := `From: "{shortTopicURL}" <{from}> | ||||||
| To: {to} | To: {to} | ||||||
| Subject: {subject} | Subject: {subject} | ||||||
|  | Content-Type: text/plain; charset="utf-8" | ||||||
| 
 | 
 | ||||||
| {message} | {message} | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -13,10 +13,10 @@ func TestFormatMail_Basic(t *testing.T) { | ||||||
| 		Topic:   "alerts", | 		Topic:   "alerts", | ||||||
| 		Message: "A simple message", | 		Message: "A simple message", | ||||||
| 	}) | 	}) | ||||||
| 	expected := `Content-Type: text/plain; charset="utf-8" | 	expected := `From: "ntfy.sh/alerts" <ntfy@ntfy.sh> | ||||||
| From: "ntfy.sh/alerts" <ntfy@ntfy.sh> |  | ||||||
| To: phil@example.com | To: phil@example.com | ||||||
| Subject: A simple message | Subject: A simple message | ||||||
|  | Content-Type: text/plain; charset="utf-8" | ||||||
| 
 | 
 | ||||||
| A simple message | A simple message | ||||||
| 
 | 
 | ||||||
|  | @ -34,10 +34,10 @@ func TestFormatMail_JustEmojis(t *testing.T) { | ||||||
| 		Message: "A simple message", | 		Message: "A simple message", | ||||||
| 		Tags:    []string{"grinning"}, | 		Tags:    []string{"grinning"}, | ||||||
| 	}) | 	}) | ||||||
| 	expected := `Content-Type: text/plain; charset="utf-8" | 	expected := `From: "ntfy.sh/alerts" <ntfy@ntfy.sh> | ||||||
| From: "ntfy.sh/alerts" <ntfy@ntfy.sh> |  | ||||||
| To: phil@example.com | To: phil@example.com | ||||||
| Subject: 😀 A simple message | Subject: =?utf-8?b?8J+YgCBBIHNpbXBsZSBtZXNzYWdl?= | ||||||
|  | Content-Type: text/plain; charset="utf-8" | ||||||
| 
 | 
 | ||||||
| A simple message | A simple message | ||||||
| 
 | 
 | ||||||
|  | @ -55,10 +55,10 @@ func TestFormatMail_JustOtherTags(t *testing.T) { | ||||||
| 		Message: "A simple message", | 		Message: "A simple message", | ||||||
| 		Tags:    []string{"not-an-emoji"}, | 		Tags:    []string{"not-an-emoji"}, | ||||||
| 	}) | 	}) | ||||||
| 	expected := `Content-Type: text/plain; charset="utf-8" | 	expected := `From: "ntfy.sh/alerts" <ntfy@ntfy.sh> | ||||||
| From: "ntfy.sh/alerts" <ntfy@ntfy.sh> |  | ||||||
| To: phil@example.com | To: phil@example.com | ||||||
| Subject: A simple message | Subject: A simple message | ||||||
|  | Content-Type: text/plain; charset="utf-8" | ||||||
| 
 | 
 | ||||||
| A simple message | A simple message | ||||||
| 
 | 
 | ||||||
|  | @ -78,10 +78,10 @@ func TestFormatMail_JustPriority(t *testing.T) { | ||||||
| 		Message:  "A simple message", | 		Message:  "A simple message", | ||||||
| 		Priority: 2, | 		Priority: 2, | ||||||
| 	}) | 	}) | ||||||
| 	expected := `Content-Type: text/plain; charset="utf-8" | 	expected := `From: "ntfy.sh/alerts" <ntfy@ntfy.sh> | ||||||
| From: "ntfy.sh/alerts" <ntfy@ntfy.sh> |  | ||||||
| To: phil@example.com | To: phil@example.com | ||||||
| Subject: A simple message | Subject: A simple message | ||||||
|  | Content-Type: text/plain; charset="utf-8" | ||||||
| 
 | 
 | ||||||
| A simple message | A simple message | ||||||
| 
 | 
 | ||||||
|  | @ -101,10 +101,10 @@ func TestFormatMail_UTF8Subject(t *testing.T) { | ||||||
| 		Message: "A simple message", | 		Message: "A simple message", | ||||||
| 		Title:   " :: A not so simple title öäüß ¡Hola, señor!", | 		Title:   " :: A not so simple title öäüß ¡Hola, señor!", | ||||||
| 	}) | 	}) | ||||||
| 	expected := `Content-Type: text/plain; charset="utf-8" | 	expected := `From: "ntfy.sh/alerts" <ntfy@ntfy.sh> | ||||||
| From: "ntfy.sh/alerts" <ntfy@ntfy.sh> |  | ||||||
| To: phil@example.com | To: phil@example.com | ||||||
| Subject:  :: A not so simple title öäüß ¡Hola, señor! | Subject: =?utf-8?b?IDo6IEEgbm90IHNvIHNpbXBsZSB0aXRsZSDDtsOkw7zDnyDCoUhvbGEsIHNl?= =?utf-8?b?w7FvciE=?= | ||||||
|  | Content-Type: text/plain; charset="utf-8" | ||||||
| 
 | 
 | ||||||
| A simple message | A simple message | ||||||
| 
 | 
 | ||||||
|  | @ -124,10 +124,10 @@ func TestFormatMail_WithAllTheThings(t *testing.T) { | ||||||
| 		Title:    "Oh no 🙈\nThis is a message across\nmultiple lines", | 		Title:    "Oh no 🙈\nThis is a message across\nmultiple lines", | ||||||
| 		Message:  "A message that contains monkeys 🙉\nNo really, though. Monkeys!", | 		Message:  "A message that contains monkeys 🙉\nNo really, though. Monkeys!", | ||||||
| 	}) | 	}) | ||||||
| 	expected := `Content-Type: text/plain; charset="utf-8" | 	expected := `From: "ntfy.sh/alerts" <ntfy@ntfy.sh> | ||||||
| From: "ntfy.sh/alerts" <ntfy@ntfy.sh> |  | ||||||
| To: phil@example.com | To: phil@example.com | ||||||
| Subject: ⚠️ 💀 Oh no 🙈 This is a message across multiple lines | Subject: =?utf-8?b?4pqg77iPIPCfkoAgT2ggbm8g8J+ZiCBUaGlzIGlzIGEgbWVzc2FnZSBhY3Jv?= =?utf-8?b?c3MgbXVsdGlwbGUgbGluZXM=?= | ||||||
|  | Content-Type: text/plain; charset="utf-8" | ||||||
| 
 | 
 | ||||||
| A message that contains monkeys 🙉 | A message that contains monkeys 🙉 | ||||||
| No really, though. Monkeys! | No really, though. Monkeys! | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue