[MM-36872] add threading headers to notification emails (#18232)
* [MM-36872] Adding headers for mail threading * MM-36872 Add message id and mail threading headers * MM-36872 Add message id and mail threading headers * MM-36872 Add msgId, inreplyto, references headers * Fixing comment issues * Applying gofmt lint fixes * Applying gofmt lint fixes * MM-36872: Updates required from merge. Co-authored-by: Mattermod <mattermod@users.noreply.github.com> Co-authored-by: Martin Kraft <martin@upspin.org>
Этот коммит содержится в:
@@ -625,7 +625,7 @@ func (es *Service) SendGuestInviteEmails(team *model.Team, channels []*model.Cha
|
||||
mlog.Error("Failed to send invite email successfully", mlog.Err(err))
|
||||
}
|
||||
|
||||
if nErr := es.SendMailWithEmbeddedFiles(invite, subject, body, embeddedFiles); nErr != nil {
|
||||
if nErr := es.SendMailWithEmbeddedFiles(invite, subject, body, embeddedFiles, "", "", ""); nErr != nil {
|
||||
mlog.Error("Failed to send invite email successfully", mlog.Err(nErr))
|
||||
if errorWhenNotSent {
|
||||
return SendMailError
|
||||
@@ -769,7 +769,7 @@ func (es *Service) SendInviteEmailsToTeamAndChannels(
|
||||
mlog.Error("Failed to send invite email successfully ", mlog.Err(err))
|
||||
}
|
||||
|
||||
if nErr := es.SendMailWithEmbeddedFiles(invite, subject, body, embeddedFiles); nErr != nil {
|
||||
if nErr := es.SendMailWithEmbeddedFiles(invite, subject, body, embeddedFiles, "", "", ""); nErr != nil {
|
||||
mlog.Error("Failed to send invite email successfully", mlog.Err(nErr))
|
||||
if errorWhenNotSent {
|
||||
inviteWithError := &model.EmailInviteWithError{
|
||||
@@ -832,7 +832,7 @@ func (es *Service) SendDeactivateAccountEmail(email string, locale, siteURL stri
|
||||
return err
|
||||
}
|
||||
|
||||
if err := es.sendMail(email, subject, body); err != nil {
|
||||
if err := es.sendMail(email, subject, body); err != nil { // this needs to receive the header options
|
||||
return err
|
||||
}
|
||||
|
||||
@@ -854,21 +854,21 @@ func (es *Service) sendEmailWithCustomReplyTo(to, subject, htmlBody, replyToAddr
|
||||
license := es.license()
|
||||
mailConfig := es.mailServiceConfig(replyToAddress)
|
||||
|
||||
return mail.SendMailUsingConfig(to, subject, htmlBody, mailConfig, license != nil && *license.Features.Compliance, "")
|
||||
return mail.SendMailUsingConfig(to, subject, htmlBody, mailConfig, license != nil && *license.Features.Compliance, "", "", "", "")
|
||||
}
|
||||
|
||||
func (es *Service) sendMailWithCC(to, subject, htmlBody string, ccMail string) error {
|
||||
license := es.license()
|
||||
mailConfig := es.mailServiceConfig("")
|
||||
|
||||
return mail.SendMailUsingConfig(to, subject, htmlBody, mailConfig, license != nil && *license.Features.Compliance, ccMail)
|
||||
return mail.SendMailUsingConfig(to, subject, htmlBody, mailConfig, license != nil && *license.Features.Compliance, "", "", "", ccMail)
|
||||
}
|
||||
|
||||
func (es *Service) SendMailWithEmbeddedFiles(to, subject, htmlBody string, embeddedFiles map[string]io.Reader) error {
|
||||
func (es *Service) SendMailWithEmbeddedFiles(to, subject, htmlBody string, embeddedFiles map[string]io.Reader, messageID string, inReplyTo string, references string) error {
|
||||
license := es.license()
|
||||
mailConfig := es.mailServiceConfig("")
|
||||
|
||||
return mail.SendMailWithEmbeddedFilesUsingConfig(to, subject, htmlBody, embeddedFiles, mailConfig, license != nil && *license.Features.Compliance, "")
|
||||
return mail.SendMailWithEmbeddedFilesUsingConfig(to, subject, htmlBody, embeddedFiles, mailConfig, license != nil && *license.Features.Compliance, messageID, inReplyTo, references, "")
|
||||
}
|
||||
|
||||
func (es *Service) InvalidateVerifyEmailTokensForUser(userID string) *model.AppError {
|
||||
|
||||
@@ -344,7 +344,7 @@ func (es *Service) sendBatchedEmailNotification(userID string, notifications []*
|
||||
mlog.Error("Unable to render email", mlog.Err(renderErr))
|
||||
}
|
||||
|
||||
if nErr := es.SendMailWithEmbeddedFiles(user.Email, subject, renderedPage, embeddedFiles); nErr != nil {
|
||||
if nErr := es.SendMailWithEmbeddedFiles(user.Email, subject, renderedPage, embeddedFiles, "", "", ""); nErr != nil {
|
||||
mlog.Warn("Unable to send batched email notification", mlog.String("email", user.Email), mlog.Err(nErr))
|
||||
}
|
||||
}
|
||||
|
||||
@@ -302,13 +302,13 @@ func (_m *ServiceInterface) SendLicenseUpForRenewalEmail(_a0 string, name string
|
||||
return r0
|
||||
}
|
||||
|
||||
// SendMailWithEmbeddedFiles provides a mock function with given fields: to, subject, htmlBody, embeddedFiles
|
||||
func (_m *ServiceInterface) SendMailWithEmbeddedFiles(to string, subject string, htmlBody string, embeddedFiles map[string]io.Reader) error {
|
||||
ret := _m.Called(to, subject, htmlBody, embeddedFiles)
|
||||
// SendMailWithEmbeddedFiles provides a mock function with given fields: to, subject, htmlBody, embeddedFiles, messageID, inReplyTo, references
|
||||
func (_m *ServiceInterface) SendMailWithEmbeddedFiles(to string, subject string, htmlBody string, embeddedFiles map[string]io.Reader, messageID string, inReplyTo string, references string) error {
|
||||
ret := _m.Called(to, subject, htmlBody, embeddedFiles, messageID, inReplyTo, references)
|
||||
|
||||
var r0 error
|
||||
if rf, ok := ret.Get(0).(func(string, string, string, map[string]io.Reader) error); ok {
|
||||
r0 = rf(to, subject, htmlBody, embeddedFiles)
|
||||
if rf, ok := ret.Get(0).(func(string, string, string, map[string]io.Reader, string, string, string) error); ok {
|
||||
r0 = rf(to, subject, htmlBody, embeddedFiles, messageID, inReplyTo, references)
|
||||
} else {
|
||||
r0 = ret.Error(0)
|
||||
}
|
||||
|
||||
@@ -142,7 +142,7 @@ type ServiceInterface interface {
|
||||
SendInviteEmailsToTeamAndChannels(team *model.Team, channels []*model.Channel, senderName string, senderUserId string, senderProfileImage []byte, invites []string, siteURL string, reminderData *model.TeamInviteReminderData, message string, errorWhenNotSent bool) ([]*model.EmailInviteWithError, error)
|
||||
SendDeactivateAccountEmail(email string, locale, siteURL string) error
|
||||
SendNotificationMail(to, subject, htmlBody string) error
|
||||
SendMailWithEmbeddedFiles(to, subject, htmlBody string, embeddedFiles map[string]io.Reader) error
|
||||
SendMailWithEmbeddedFiles(to, subject, htmlBody string, embeddedFiles map[string]io.Reader, messageID string, inReplyTo string, references string) error
|
||||
SendLicenseUpForRenewalEmail(email, name, locale, siteURL, renewalLink string, daysToExpiration int) error
|
||||
SendPaymentFailedEmail(email string, locale string, failedPayment *model.FailedPayment, siteURL string) (bool, error)
|
||||
SendNoCardPaymentFailedEmail(email string, locale string, siteURL string) error
|
||||
|
||||
Ссылка в новой задаче
Block a user