diff --git a/backend/dto/parsemail/email.go b/backend/dto/parsemail/email.go index 20ec0df8..6d9ac21a 100644 --- a/backend/dto/parsemail/email.go +++ b/backend/dto/parsemail/email.go @@ -678,6 +678,15 @@ func (e *Email) ForwardBuildBytes(ctx *context.Context, sender *models.User, for h.Set("In-Reply-To", fmt.Sprintf("<%s>", e.MsgID)) } + unsubDomain := cfg.Domain + if len(cfg.Domains) > 0 && cfg.Domains[0] != "" { + unsubDomain = cfg.Domains[0] + } + if unsubDomain != "" { + h.Set("List-Unsubscribe", fmt.Sprintf("", unsubDomain)) + h.Set("List-Unsubscribe-Post", "List-Unsubscribe=One-Click") + } + // Create a new mail writer mw, err := mail.CreateWriter(&b, h) if err != nil { @@ -882,6 +891,15 @@ func (e *Email) BuildBytes(ctx *context.Context, dkim bool) ([]byte, error) { h.SetAddressList("Cc", cc) } + unsubDomain := cfg.Domain + if len(cfg.Domains) > 0 && cfg.Domains[0] != "" { + unsubDomain = cfg.Domains[0] + } + if unsubDomain != "" { + h.Set("List-Unsubscribe", fmt.Sprintf("", unsubDomain)) + h.Set("List-Unsubscribe-Post", "List-Unsubscribe=One-Click") + } + // Create a new mail writer mw, err := mail.CreateWriter(&b, h) if err != nil { diff --git a/backend/services/verification/delivery.go b/backend/services/verification/delivery.go index e9c11d63..d82e85bb 100644 --- a/backend/services/verification/delivery.go +++ b/backend/services/verification/delivery.go @@ -219,10 +219,11 @@ func buildCodeMessage(from string, challenge Challenge, code string) []byte { htmlBody := CodeHTML(challenge, code) return []byte(fmt.Sprintf( - "From: %s\r\nTo: %s\r\nSubject: %s\r\nMIME-Version: 1.0\r\nContent-Type: multipart/alternative; boundary=\"%s\"\r\n\r\n--%s\r\nContent-Type: text/plain; charset=UTF-8\r\nContent-Transfer-Encoding: 8bit\r\n\r\n%s\r\n--%s\r\nContent-Type: text/html; charset=UTF-8\r\nContent-Transfer-Encoding: 8bit\r\n\r\n%s\r\n--%s--\r\n", + "From: %s\r\nTo: %s\r\nSubject: %s\r\nList-Unsubscribe: \r\nList-Unsubscribe-Post: List-Unsubscribe=One-Click\r\nMIME-Version: 1.0\r\nContent-Type: multipart/alternative; boundary=\"%s\"\r\n\r\n--%s\r\nContent-Type: text/plain; charset=UTF-8\r\nContent-Transfer-Encoding: 8bit\r\n\r\n%s\r\n--%s\r\nContent-Type: text/html; charset=UTF-8\r\nContent-Transfer-Encoding: 8bit\r\n\r\n%s\r\n--%s--\r\n", from, challenge.Email, mime.QEncoding.Encode("UTF-8", title), + strings.TrimSpace(strings.Split(from, "@")[len(strings.Split(from, "@"))-1]), boundary, boundary, text, diff --git a/frontend/src/views/components/HomeAside/HomeAside.vue b/frontend/src/views/components/HomeAside/HomeAside.vue index cfed6394..6513d34a 100644 --- a/frontend/src/views/components/HomeAside/HomeAside.vue +++ b/frontend/src/views/components/HomeAside/HomeAside.vue @@ -57,7 +57,7 @@ {{ lang.settings }} - V2.11.0 + V2.11.1