From 3081e7e1536356346f73fb4a0d00101863b2cf05 Mon Sep 17 00:00:00 2001 From: KN4CK3R Date: Mon, 13 Nov 2023 04:20:34 +0100 Subject: [PATCH] Fix missing mail reply address (#27997) Fixes https://codeberg.org/forgejo/forgejo/issues/1458 Some mails such as issue creation mails are missing the reply-to-comment address. This PR fixes that and specifies which comment types should get a reply-possibility. --- models/issues/comment.go | 8 ++++++++ services/mailer/mail.go | 8 +++++--- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/models/issues/comment.go b/models/issues/comment.go index 8e06838f73..f2a3cb7b02 100644 --- a/models/issues/comment.go +++ b/models/issues/comment.go @@ -183,6 +183,14 @@ func (t CommentType) HasAttachmentSupport() bool { return false } +func (t CommentType) HasMailReplySupport() bool { + switch t { + case CommentTypeComment, CommentTypeCode, CommentTypeReview, CommentTypeDismissReview, CommentTypeReopen, CommentTypeClose, CommentTypeMergePull, CommentTypeAssignees: + return true + } + return false +} + // RoleInRepo presents the user's participation in the repo type RoleInRepo string diff --git a/services/mailer/mail.go b/services/mailer/mail.go index 1f139d233f..b597dd0487 100644 --- a/services/mailer/mail.go +++ b/services/mailer/mail.go @@ -290,8 +290,10 @@ func composeIssueCommentMessages(ctx *mailCommentContext, lang string, recipient reference := createReference(ctx.Issue, nil, activities_model.ActionType(0)) var replyPayload []byte - if ctx.Comment != nil && ctx.Comment.Type == issues_model.CommentTypeCode { - replyPayload, err = incoming_payload.CreateReferencePayload(ctx.Comment) + if ctx.Comment != nil { + if ctx.Comment.Type.HasMailReplySupport() { + replyPayload, err = incoming_payload.CreateReferencePayload(ctx.Comment) + } } else { replyPayload, err = incoming_payload.CreateReferencePayload(ctx.Issue) } @@ -316,7 +318,7 @@ func composeIssueCommentMessages(ctx *mailCommentContext, lang string, recipient listUnsubscribe := []string{"<" + ctx.Issue.HTMLURL() + ">"} if setting.IncomingEmail.Enabled { - if ctx.Comment != nil { + if replyPayload != nil { token, err := token.CreateToken(token.ReplyHandlerType, recipient, replyPayload) if err != nil { log.Error("CreateToken failed: %v", err)