}
// Make sure to compose independent messages to avoid leaking user emails
- msgID := createReference(ctx.Issue, ctx.Comment, ctx.ActionType)
- reference := createReference(ctx.Issue, nil, activities_model.ActionType(0))
+ msgID := generateMessageIDForIssue(ctx.Issue, ctx.Comment, ctx.ActionType)
+ reference := generateMessageIDForIssue(ctx.Issue, nil, activities_model.ActionType(0))
var replyPayload []byte
if ctx.Comment != nil {
return msgs, nil
}
-func createReference(issue *issues_model.Issue, comment *issues_model.Comment, actionType activities_model.ActionType) string {
+func generateMessageIDForIssue(issue *issues_model.Issue, comment *issues_model.Comment, actionType activities_model.ActionType) string {
var path string
if issue.IsPull {
path = "pulls"
return fmt.Sprintf("<%s/%s/%d%s@%s>", issue.Repo.FullName(), path, issue.Index, extra, setting.Domain)
}
+func generateMessageIDForRelease(release *repo_model.Release) string {
+ return fmt.Sprintf("<%s/releases/%d@%s>", release.Repo.FullName(), release.ID, setting.Domain)
+}
+
func generateAdditionalHeaders(ctx *mailCommentContext, reason string, recipient *user_model.User) map[string]string {
repo := ctx.Issue.Repo
msgs := make([]*Message, 0, len(tos))
publisherName := rel.Publisher.DisplayName()
- relURL := "<" + rel.HTMLURL() + ">"
+ msgID := generateMessageIDForRelease(rel)
for _, to := range tos {
msg := NewMessageFrom(to, publisherName, setting.MailService.FromEmail, subject, mailBody.String())
msg.Info = subject
- msg.SetHeader("Message-ID", relURL)
+ msg.SetHeader("Message-ID", msgID)
msgs = append(msgs, msg)
}
}
}
-func Test_createReference(t *testing.T) {
+func TestGenerateMessageIDForIssue(t *testing.T) {
_, _, issue, comment := prepareMailerTest(t)
_, _, pullIssue, _ := prepareMailerTest(t)
pullIssue.IsPull = true
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
- got := createReference(tt.args.issue, tt.args.comment, tt.args.actionType)
+ got := generateMessageIDForIssue(tt.args.issue, tt.args.comment, tt.args.actionType)
if !strings.HasPrefix(got, tt.prefix) {
- t.Errorf("createReference() = %v, want %v", got, tt.prefix)
+ t.Errorf("generateMessageIDForIssue() = %v, want %v", got, tt.prefix)
}
})
}
}
+
+func TestGenerateMessageIDForRelease(t *testing.T) {
+ msgID := generateMessageIDForRelease(&repo_model.Release{
+ ID: 1,
+ Repo: &repo_model.Repository{OwnerName: "owner", Name: "repo"},
+ })
+ assert.Equal(t, "<owner/repo/releases/1@localhost>", msgID)
+}