Extracting mail service into shared libs (#17030)
* Extracting mail service into shared libs * Fixing golangci-lint
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
027413aebd
Коммит
8abb4184b5
@@ -17,8 +17,8 @@ import (
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/app"
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/services/mailservice"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/i18n"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mail"
|
||||
"github.com/mattermost/mattermost-server/v5/utils/testutils"
|
||||
)
|
||||
|
||||
@@ -2750,8 +2750,8 @@ func TestInviteUsersToTeam(t *testing.T) {
|
||||
emailList := []string{user1, user2}
|
||||
|
||||
//Delete all the messages before check the sample email
|
||||
mailservice.DeleteMailBox(user1)
|
||||
mailservice.DeleteMailBox(user2)
|
||||
mail.DeleteMailBox(user1)
|
||||
mail.DeleteMailBox(user2)
|
||||
|
||||
enableEmailInvitations := *th.App.Config().ServiceSettings.EnableEmailInvitations
|
||||
restrictCreationToDomains := th.App.Config().TeamSettings.RestrictCreationToDomains
|
||||
@@ -2769,10 +2769,10 @@ func TestInviteUsersToTeam(t *testing.T) {
|
||||
checkEmail := func(t *testing.T, expectedSubject string) {
|
||||
//Check if the email was sent to the right email address
|
||||
for _, email := range emailList {
|
||||
var resultsMailbox mailservice.JSONMessageHeaderInbucket
|
||||
err := mailservice.RetryInbucket(5, func() error {
|
||||
var resultsMailbox mail.JSONMessageHeaderInbucket
|
||||
err := mail.RetryInbucket(5, func() error {
|
||||
var err error
|
||||
resultsMailbox, err = mailservice.GetMailBox(email)
|
||||
resultsMailbox, err = mail.GetMailBox(email)
|
||||
return err
|
||||
})
|
||||
if err != nil {
|
||||
@@ -2781,7 +2781,7 @@ func TestInviteUsersToTeam(t *testing.T) {
|
||||
}
|
||||
if err == nil && len(resultsMailbox) > 0 {
|
||||
require.True(t, strings.ContainsAny(resultsMailbox[len(resultsMailbox)-1].To[0], email), "Wrong To recipient")
|
||||
resultsEmail, err := mailservice.GetMessageFromMailbox(email, resultsMailbox[len(resultsMailbox)-1].ID)
|
||||
resultsEmail, err := mail.GetMessageFromMailbox(email, resultsMailbox[len(resultsMailbox)-1].ID)
|
||||
if err == nil {
|
||||
require.Equalf(t, resultsEmail.Subject, expectedSubject, "Wrong Subject, actual: %s, expected: %s", resultsEmail.Subject, expectedSubject)
|
||||
}
|
||||
@@ -2800,8 +2800,8 @@ func TestInviteUsersToTeam(t *testing.T) {
|
||||
"SiteName": th.App.ClientConfig()["SiteName"]})
|
||||
checkEmail(t, expectedSubject)
|
||||
|
||||
mailservice.DeleteMailBox(user1)
|
||||
mailservice.DeleteMailBox(user2)
|
||||
mail.DeleteMailBox(user1)
|
||||
mail.DeleteMailBox(user2)
|
||||
okMsg, resp = th.LocalClient.InviteUsersToTeam(th.BasicTeam.Id, emailList)
|
||||
CheckNoError(t, resp)
|
||||
require.True(t, okMsg, "should return true")
|
||||
@@ -2883,8 +2883,8 @@ func TestInviteGuestsToTeam(t *testing.T) {
|
||||
emailList := []string{guest1, guest2}
|
||||
|
||||
//Delete all the messages before check the sample email
|
||||
mailservice.DeleteMailBox(guest1)
|
||||
mailservice.DeleteMailBox(guest2)
|
||||
mail.DeleteMailBox(guest1)
|
||||
mail.DeleteMailBox(guest2)
|
||||
|
||||
enableEmailInvitations := *th.App.Config().ServiceSettings.EnableEmailInvitations
|
||||
restrictCreationToDomains := th.App.Config().TeamSettings.RestrictCreationToDomains
|
||||
@@ -2939,10 +2939,10 @@ func TestInviteGuestsToTeam(t *testing.T) {
|
||||
|
||||
//Check if the email was send to the right email address
|
||||
for _, email := range emailList {
|
||||
var resultsMailbox mailservice.JSONMessageHeaderInbucket
|
||||
err := mailservice.RetryInbucket(5, func() error {
|
||||
var resultsMailbox mail.JSONMessageHeaderInbucket
|
||||
err := mail.RetryInbucket(5, func() error {
|
||||
var err error
|
||||
resultsMailbox, err = mailservice.GetMailBox(email)
|
||||
resultsMailbox, err = mail.GetMailBox(email)
|
||||
return err
|
||||
})
|
||||
if err != nil {
|
||||
@@ -2951,7 +2951,7 @@ func TestInviteGuestsToTeam(t *testing.T) {
|
||||
}
|
||||
if err == nil && len(resultsMailbox) > 0 {
|
||||
require.True(t, strings.ContainsAny(resultsMailbox[len(resultsMailbox)-1].To[0], email), "Wrong To recipient")
|
||||
resultsEmail, err := mailservice.GetMessageFromMailbox(email, resultsMailbox[len(resultsMailbox)-1].ID)
|
||||
resultsEmail, err := mail.GetMessageFromMailbox(email, resultsMailbox[len(resultsMailbox)-1].ID)
|
||||
if err == nil {
|
||||
require.Equalf(t, resultsEmail.Subject, expectedSubject, "Wrong Subject, actual: %s, expected: %s", resultsEmail.Subject, expectedSubject)
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ import (
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/app"
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/services/mailservice"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mail"
|
||||
"github.com/mattermost/mattermost-server/v5/utils/testutils"
|
||||
)
|
||||
|
||||
@@ -2861,7 +2861,7 @@ func TestResetPassword(t *testing.T) {
|
||||
th.Client.Logout()
|
||||
user := th.BasicUser
|
||||
// Delete all the messages before check the reset password
|
||||
mailservice.DeleteMailBox(user.Email)
|
||||
mail.DeleteMailBox(user.Email)
|
||||
th.TestForAllClients(t, func(t *testing.T, client *model.Client4) {
|
||||
success, resp := client.SendPasswordResetEmail(user.Email)
|
||||
CheckNoError(t, resp)
|
||||
@@ -2874,10 +2874,10 @@ func TestResetPassword(t *testing.T) {
|
||||
require.True(t, success, "should succeed")
|
||||
})
|
||||
// Check if the email was send to the right email address and the recovery key match
|
||||
var resultsMailbox mailservice.JSONMessageHeaderInbucket
|
||||
err := mailservice.RetryInbucket(5, func() error {
|
||||
var resultsMailbox mail.JSONMessageHeaderInbucket
|
||||
err := mail.RetryInbucket(5, func() error {
|
||||
var err error
|
||||
resultsMailbox, err = mailservice.GetMailBox(user.Email)
|
||||
resultsMailbox, err = mail.GetMailBox(user.Email)
|
||||
return err
|
||||
})
|
||||
if err != nil {
|
||||
@@ -2887,7 +2887,7 @@ func TestResetPassword(t *testing.T) {
|
||||
var recoveryTokenString string
|
||||
if err == nil && len(resultsMailbox) > 0 {
|
||||
require.Contains(t, resultsMailbox[0].To[0], user.Email, "Correct To recipient")
|
||||
resultsEmail, mailErr := mailservice.GetMessageFromMailbox(user.Email, resultsMailbox[0].ID)
|
||||
resultsEmail, mailErr := mail.GetMessageFromMailbox(user.Email, resultsMailbox[0].ID)
|
||||
require.NoError(t, mailErr)
|
||||
loc := strings.Index(resultsEmail.Body.Text, "token=")
|
||||
require.NotEqual(t, -1, loc, "Code should be found in email")
|
||||
|
||||
@@ -14,8 +14,8 @@ import (
|
||||
"time"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/services/mailservice"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/i18n"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mail"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mlog"
|
||||
"github.com/mattermost/mattermost-server/v5/utils"
|
||||
)
|
||||
@@ -228,7 +228,7 @@ func (a *App) TestEmail(userID string, cfg *model.Config) *model.AppError {
|
||||
T := i18n.GetUserTranslations(user.Locale)
|
||||
license := a.Srv().License()
|
||||
mailConfig := a.Srv().MailServiceConfig()
|
||||
if err := mailservice.SendMailUsingConfig(user.Email, T("api.admin.test_email.subject"), T("api.admin.test_email.body"), mailConfig, license != nil && *license.Features.Compliance, ""); err != nil {
|
||||
if err := mail.SendMailUsingConfig(user.Email, T("api.admin.test_email.subject"), T("api.admin.test_email.body"), mailConfig, license != nil && *license.Features.Compliance, ""); err != nil {
|
||||
return model.NewAppError("testEmail", "app.admin.test_email.failure", map[string]interface{}{"Error": err.Error()}, "", http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
|
||||
@@ -15,10 +15,10 @@ import (
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/services/httpservice"
|
||||
"github.com/mattermost/mattermost-server/v5/services/imageproxy"
|
||||
"github.com/mattermost/mattermost-server/v5/services/mailservice"
|
||||
"github.com/mattermost/mattermost-server/v5/services/searchengine"
|
||||
"github.com/mattermost/mattermost-server/v5/services/timezones"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/i18n"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mail"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mlog"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/templates"
|
||||
"github.com/mattermost/mattermost-server/v5/utils"
|
||||
@@ -498,7 +498,7 @@ func (a *App) NotifyAndSetWarnMetricAck(warnMetricId string, sender *model.User,
|
||||
return model.NewAppError("NotifyAndSetWarnMetricAck", "api.email.send_warn_metric_ack.failure.app_error", map[string]interface{}{"Error": err.Error()}, "", http.StatusInternalServerError)
|
||||
}
|
||||
|
||||
if err := mailservice.SendMailUsingConfig(model.MM_SUPPORT_ADVISOR_ADDRESS, subject, body, mailConfig, false, sender.Email); err != nil {
|
||||
if err := mail.SendMailUsingConfig(model.MM_SUPPORT_ADVISOR_ADDRESS, subject, body, mailConfig, false, sender.Email); err != nil {
|
||||
return model.NewAppError("NotifyAndSetWarnMetricAck", "api.email.send_warn_metric_ack.failure.app_error", map[string]interface{}{"Error": err.Error()}, "", http.StatusInternalServerError)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -21,7 +21,7 @@ import (
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/config"
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/services/mailservice"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mail"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mlog"
|
||||
"github.com/mattermost/mattermost-server/v5/utils"
|
||||
)
|
||||
@@ -453,10 +453,10 @@ func (a *App) HandleMessageExportConfig(cfg *model.Config, appCfg *model.Config)
|
||||
}
|
||||
}
|
||||
|
||||
func (s *Server) MailServiceConfig() *mailservice.SMTPConfig {
|
||||
func (s *Server) MailServiceConfig() *mail.SMTPConfig {
|
||||
emailSettings := s.Config().EmailSettings
|
||||
hostname := utils.GetHostnameFromSiteURL(*s.Config().ServiceSettings.SiteURL)
|
||||
cfg := mailservice.SMTPConfig{
|
||||
cfg := mail.SMTPConfig{
|
||||
Hostname: hostname,
|
||||
ConnectionSecurity: *emailSettings.ConnectionSecurity,
|
||||
SkipServerCertificateVerification: *emailSettings.SkipServerCertificateVerification,
|
||||
|
||||
@@ -20,8 +20,8 @@ import (
|
||||
"github.com/throttled/throttled/store/memstore"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/services/mailservice"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/i18n"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mail"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mlog"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/templates"
|
||||
)
|
||||
@@ -699,14 +699,14 @@ func (es *EmailService) sendMailWithCC(to, subject, htmlBody string, ccMail stri
|
||||
license := es.srv.License()
|
||||
mailConfig := es.srv.MailServiceConfig()
|
||||
|
||||
return mailservice.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 *EmailService) sendMailWithEmbeddedFiles(to, subject, htmlBody string, embeddedFiles map[string]io.Reader) error {
|
||||
license := es.srv.License()
|
||||
mailConfig := es.srv.MailServiceConfig()
|
||||
|
||||
return mailservice.SendMailWithEmbeddedFilesUsingConfig(to, subject, htmlBody, embeddedFiles, mailConfig, license != nil && *license.Features.Compliance, "")
|
||||
return mail.SendMailWithEmbeddedFilesUsingConfig(to, subject, htmlBody, embeddedFiles, mailConfig, license != nil && *license.Features.Compliance, "")
|
||||
}
|
||||
|
||||
func (es *EmailService) CreateVerifyEmailToken(userID string, newEmail string) (*model.Token, *model.AppError) {
|
||||
|
||||
@@ -12,7 +12,7 @@ import (
|
||||
"github.com/stretchr/testify/require"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/services/mailservice"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mail"
|
||||
)
|
||||
|
||||
func TestCondenseSiteURL(t *testing.T) {
|
||||
@@ -145,15 +145,15 @@ func TestSendInviteEmails(t *testing.T) {
|
||||
})
|
||||
|
||||
emailTo := "test@example.com"
|
||||
mailservice.DeleteMailBox(emailTo)
|
||||
mail.DeleteMailBox(emailTo)
|
||||
|
||||
appErr := th.App.Srv().EmailService.SendInviteEmails(th.BasicTeam, "test-user", th.BasicUser.Id, []string{emailTo}, "http://testserver")
|
||||
require.Nil(t, appErr)
|
||||
|
||||
var resultsMailbox mailservice.JSONMessageHeaderInbucket
|
||||
err2 := mailservice.RetryInbucket(5, func() error {
|
||||
var resultsMailbox mail.JSONMessageHeaderInbucket
|
||||
err2 := mail.RetryInbucket(5, func() error {
|
||||
var err error
|
||||
resultsMailbox, err = mailservice.GetMailBox(emailTo)
|
||||
resultsMailbox, err = mail.GetMailBox(emailTo)
|
||||
return err
|
||||
})
|
||||
if err2 != nil {
|
||||
@@ -162,7 +162,7 @@ func TestSendInviteEmails(t *testing.T) {
|
||||
} else if len(resultsMailbox) > 0 {
|
||||
require.Len(t, resultsMailbox, 1)
|
||||
require.Contains(t, resultsMailbox[0].To[0], emailTo, "Wrong To: recipient")
|
||||
resultsEmail, err := mailservice.GetMessageFromMailbox(emailTo, resultsMailbox[0].ID)
|
||||
resultsEmail, err := mail.GetMessageFromMailbox(emailTo, resultsMailbox[0].ID)
|
||||
require.NoError(t, err, "Could not get message from mailbox")
|
||||
require.Contains(t, resultsEmail.Body.HTML, "http://testserver", "Wrong received message %s", resultsEmail.Body.Text)
|
||||
require.Contains(t, resultsEmail.Body.HTML, "test-user", "Wrong received message %s", resultsEmail.Body.Text)
|
||||
|
||||
@@ -10,7 +10,7 @@ import (
|
||||
"github.com/mattermost/mattermost-server/v5/app/plugin_api_tests"
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/plugin"
|
||||
"github.com/mattermost/mattermost-server/v5/services/mailservice"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mail"
|
||||
)
|
||||
|
||||
type MyPlugin struct {
|
||||
@@ -35,10 +35,10 @@ func (p *MyPlugin) MessageWillBePosted(_ *plugin.Context, _ *model.Post) (*model
|
||||
}
|
||||
|
||||
// Check if we received the email
|
||||
var resultsMailbox mailservice.JSONMessageHeaderInbucket
|
||||
if errMail := mailservice.RetryInbucket(5, func() error {
|
||||
var resultsMailbox mail.JSONMessageHeaderInbucket
|
||||
if errMail := mail.RetryInbucket(5, func() error {
|
||||
var err error
|
||||
resultsMailbox, err = mailservice.GetMailBox(to)
|
||||
resultsMailbox, err = mail.GetMailBox(to)
|
||||
return err
|
||||
}); errMail != nil {
|
||||
return nil, errMail.Error()
|
||||
@@ -50,7 +50,7 @@ func (p *MyPlugin) MessageWillBePosted(_ *plugin.Context, _ *model.Post) (*model
|
||||
return nil, "Result doesn't contain recipient"
|
||||
}
|
||||
|
||||
resultsEmail, err1 := mailservice.GetMessageFromMailbox(to, resultsMailbox[len(resultsMailbox)-1].ID)
|
||||
resultsEmail, err1 := mail.GetMessageFromMailbox(to, resultsMailbox[len(resultsMailbox)-1].ID)
|
||||
if err1 != nil {
|
||||
return nil, err1.Error()
|
||||
}
|
||||
|
||||
@@ -11,8 +11,8 @@ import (
|
||||
"strconv"
|
||||
|
||||
"github.com/mattermost/mattermost-server/v5/model"
|
||||
"github.com/mattermost/mattermost-server/v5/services/mailservice"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/i18n"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mail"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mlog"
|
||||
)
|
||||
|
||||
@@ -116,7 +116,7 @@ func (s *Server) DoSecurityUpdateCheck() {
|
||||
mlog.Info("Sending security bulletin", mlog.String("bulletin_id", bulletin.Id), mlog.String("user_email", user.Email))
|
||||
license := s.License()
|
||||
mailConfig := s.MailServiceConfig()
|
||||
mailservice.SendMailUsingConfig(user.Email, i18n.T("mattermost.bulletin.subject"), string(body), mailConfig, license != nil && *license.Features.Compliance, "")
|
||||
mail.SendMailUsingConfig(user.Email, i18n.T("mattermost.bulletin.subject"), string(body), mailConfig, license != nil && *license.Features.Compliance, "")
|
||||
}
|
||||
|
||||
bulletinSeen := &model.System{Name: "SecurityBulletin_" + bulletin.Id, Value: bulletin.Id}
|
||||
|
||||
@@ -48,7 +48,6 @@ import (
|
||||
"github.com/mattermost/mattermost-server/v5/services/cache"
|
||||
"github.com/mattermost/mattermost-server/v5/services/httpservice"
|
||||
"github.com/mattermost/mattermost-server/v5/services/imageproxy"
|
||||
"github.com/mattermost/mattermost-server/v5/services/mailservice"
|
||||
"github.com/mattermost/mattermost-server/v5/services/searchengine"
|
||||
"github.com/mattermost/mattermost-server/v5/services/searchengine/bleveengine"
|
||||
"github.com/mattermost/mattermost-server/v5/services/telemetry"
|
||||
@@ -57,6 +56,7 @@ import (
|
||||
"github.com/mattermost/mattermost-server/v5/services/upgrader"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/filestore"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/i18n"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mail"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/mlog"
|
||||
"github.com/mattermost/mattermost-server/v5/shared/templates"
|
||||
"github.com/mattermost/mattermost-server/v5/store"
|
||||
@@ -517,7 +517,7 @@ func NewServer(options ...Option) (*Server, error) {
|
||||
|
||||
mailConfig := s.MailServiceConfig()
|
||||
|
||||
if nErr := mailservice.TestConnection(mailConfig); nErr != nil {
|
||||
if nErr := mail.TestConnection(mailConfig); nErr != nil {
|
||||
mlog.Error("Mail server connection test is failed", mlog.Err(nErr))
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
package mailservice
|
||||
package mail
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
package mailservice
|
||||
package mail
|
||||
|
||||
import (
|
||||
"context"
|
||||
@@ -1,7 +1,7 @@
|
||||
// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
|
||||
// See LICENSE.txt for license information.
|
||||
|
||||
package mailservice
|
||||
package mail
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
Ссылка в новой задаче
Block a user