diff --git a/api4/team_test.go b/api4/team_test.go index d67e571f8d..045576b7fe 100644 --- a/api4/team_test.go +++ b/api4/team_test.go @@ -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) } diff --git a/api4/user_test.go b/api4/user_test.go index 9f91550474..f1733bd7f0 100644 --- a/api4/user_test.go +++ b/api4/user_test.go @@ -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") diff --git a/app/admin.go b/app/admin.go index 3a5f04f91f..7b4c9d30e2 100644 --- a/app/admin.go +++ b/app/admin.go @@ -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) } diff --git a/app/app.go b/app/app.go index 0b283b44f2..62ef79b63b 100644 --- a/app/app.go +++ b/app/app.go @@ -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) } } diff --git a/app/config.go b/app/config.go index 4d3faec5ed..6b31517590 100644 --- a/app/config.go +++ b/app/config.go @@ -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, diff --git a/app/email.go b/app/email.go index 6fdc2a9f25..249d38cd75 100644 --- a/app/email.go +++ b/app/email.go @@ -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) { diff --git a/app/email_test.go b/app/email_test.go index d276309541..8f554e342f 100644 --- a/app/email_test.go +++ b/app/email_test.go @@ -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) diff --git a/app/plugin_api_tests/test_send_mail_plugin/main.go b/app/plugin_api_tests/test_send_mail_plugin/main.go index c908f7c2b2..d3fec5f469 100644 --- a/app/plugin_api_tests/test_send_mail_plugin/main.go +++ b/app/plugin_api_tests/test_send_mail_plugin/main.go @@ -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() } diff --git a/app/security_update_check.go b/app/security_update_check.go index f0969cc5fe..7e84cdc43a 100644 --- a/app/security_update_check.go +++ b/app/security_update_check.go @@ -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} diff --git a/app/server.go b/app/server.go index 36f94e0694..c73642896d 100644 --- a/app/server.go +++ b/app/server.go @@ -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)) } diff --git a/services/mailservice/inbucket.go b/shared/mail/inbucket.go similarity index 99% rename from services/mailservice/inbucket.go rename to shared/mail/inbucket.go index 2ff58e1fe4..b23f6182f3 100644 --- a/services/mailservice/inbucket.go +++ b/shared/mail/inbucket.go @@ -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" diff --git a/services/mailservice/mail.go b/shared/mail/mail.go similarity index 99% rename from services/mailservice/mail.go rename to shared/mail/mail.go index 9d8344126c..f5f24ee093 100644 --- a/services/mailservice/mail.go +++ b/shared/mail/mail.go @@ -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" diff --git a/services/mailservice/mail_test.go b/shared/mail/mail_test.go similarity index 99% rename from services/mailservice/mail_test.go rename to shared/mail/mail_test.go index f403ac5e90..53732ed348 100644 --- a/services/mailservice/mail_test.go +++ b/shared/mail/mail_test.go @@ -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"