mirror of
https://github.com/dnote/dnote
synced 2026-03-14 22:45:50 +01:00
Allow to configure SMTP port (#292)
* Allow to customize SMTP port * Document change * Fix test * Add env vars
This commit is contained in:
parent
5d6ad342f3
commit
8e7d24d409
15 changed files with 101 additions and 68 deletions
|
|
@ -14,11 +14,15 @@ The following log documentes the history of the server project.
|
|||
|
||||
#### Upgrade Guide
|
||||
|
||||
* Please define a new environment variable `WebURL` whose value is the URL to your Dnote server, without the trailing slash. (e.g. `https://my-server.com`) (Please see #290)
|
||||
* Please define the follwoing new environment variables:
|
||||
|
||||
- `WebURL`: the URL to your Dnote server, without the trailing slash. (e.g. `https://my-server.com`) (Please see #290)
|
||||
- `SmtpPort`: the SMTP port. (e.g. `465`) optional - required *if you want to configure email*
|
||||
|
||||
#### Fixed
|
||||
|
||||
- Allow to customize the app URL in the emails (#290)
|
||||
- Allow to customize the SMTP port
|
||||
|
||||
### 0.2.0 - 2019-10-28
|
||||
|
||||
|
|
|
|||
|
|
@ -9,5 +9,6 @@ DBPassword=
|
|||
SmtpUsername=mock-SmtpUsername
|
||||
SmtpPassword=mock-SmtpPassword
|
||||
SmtpHost=mock-SmtpHost
|
||||
SmtpPort=465
|
||||
|
||||
WebURL=http://localhost:3000
|
||||
|
|
|
|||
|
|
@ -9,5 +9,6 @@ DBPassword=
|
|||
SmtpUsername=mock-SmtpUsername
|
||||
SmtpPassword=mock-SmtpPassword
|
||||
SmtpHost=mock-SmtpHost
|
||||
SmtpPort=465
|
||||
|
||||
WebURL=http://localhost:3000
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ func TestGetMe(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -63,7 +63,7 @@ func TestCreateResetToken(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -96,7 +96,7 @@ func TestCreateResetToken(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -125,7 +125,7 @@ func TestResetPassword(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -171,7 +171,7 @@ func TestResetPassword(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -209,7 +209,7 @@ func TestResetPassword(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -246,7 +246,7 @@ func TestResetPassword(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -294,7 +294,7 @@ func TestResetPassword(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
|
|||
|
|
@ -77,7 +77,7 @@ func TestClassicPresignin(t *testing.T) {
|
|||
t.Run(fmt.Sprintf("presignin %s", tc.email), func(t *testing.T) {
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -105,7 +105,7 @@ func TestClassicPresignin_MissingParams(t *testing.T) {
|
|||
defer testutils.ClearData()
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -128,7 +128,7 @@ func TestClassicSignin(t *testing.T) {
|
|||
testutils.MustExec(t, db.Save(&alice), "saving alice")
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -226,7 +226,7 @@ func TestClassicSignin_Failure(t *testing.T) {
|
|||
t.Run(fmt.Sprintf("signin %s %s", tc.email, tc.authKey), func(t *testing.T) {
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ func TestCheckHealth(t *testing.T) {
|
|||
defer testutils.ClearData()
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
|
|||
|
|
@ -43,7 +43,7 @@ func TestGetNotes(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -186,7 +186,7 @@ func TestGetNote(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ func TestGetRepetitionRule(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -116,7 +116,7 @@ func TestGetRepetitionRules(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -225,7 +225,7 @@ func TestCreateRepetitionRules(t *testing.T) {
|
|||
t0 := time.Date(2009, time.November, 1, 2, 3, 4, 5, time.UTC)
|
||||
c.SetNow(t0)
|
||||
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: c,
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -283,7 +283,7 @@ func TestCreateRepetitionRules(t *testing.T) {
|
|||
t0 := time.Date(2009, time.November, 1, 2, 3, 4, 5, time.UTC)
|
||||
c.SetNow(t0)
|
||||
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: c,
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -346,7 +346,7 @@ func TestUpdateRepetitionRules(t *testing.T) {
|
|||
c := clock.NewMock()
|
||||
t0 := time.Date(2009, time.November, 1, 2, 3, 4, 5, time.UTC)
|
||||
c.SetNow(t0)
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: c,
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -420,7 +420,7 @@ func TestDeleteRepetitionRules(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -545,7 +545,7 @@ func TestCreateUpdateRepetitionRules_BadRequest(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -589,7 +589,7 @@ func TestCreateUpdateRepetitionRules_BadRequest(t *testing.T) {
|
|||
}
|
||||
testutils.MustExec(t, db.Save(&b1), "preparing book1")
|
||||
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -628,7 +628,7 @@ func TestCreateRepetitionRules_BadRequest(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
|
|||
|
|
@ -681,7 +681,7 @@ func TestNotSupportedVersions(t *testing.T) {
|
|||
}
|
||||
|
||||
// setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
|
|||
|
|
@ -26,9 +26,9 @@ import (
|
|||
"github.com/pkg/errors"
|
||||
)
|
||||
|
||||
// mustNewServer is a test utility function to initialize a new server
|
||||
// MustNewServer is a test utility function to initialize a new server
|
||||
// with the given app paratmers
|
||||
func mustNewServer(t *testing.T, app *App) *httptest.Server {
|
||||
func MustNewServer(t *testing.T, app *App) *httptest.Server {
|
||||
app.WebURL = os.Getenv("WebURL")
|
||||
|
||||
r, err := NewRouter(app)
|
||||
|
|
|
|||
|
|
@ -46,7 +46,7 @@ func TestUpdatePassword(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -74,7 +74,7 @@ func TestUpdatePassword(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -100,7 +100,7 @@ func TestUpdatePassword(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -134,7 +134,7 @@ func TestCreateVerificationToken(t *testing.T) {
|
|||
templatePath := fmt.Sprintf("%s/mailer/templates/src", testutils.ServerPath)
|
||||
mailer.InitTemplates(&templatePath)
|
||||
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -167,7 +167,7 @@ func TestCreateVerificationToken(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -200,7 +200,7 @@ func TestVerifyEmail(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -241,7 +241,7 @@ func TestVerifyEmail(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -285,7 +285,7 @@ func TestVerifyEmail(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -327,7 +327,7 @@ func TestVerifyEmail(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -372,7 +372,7 @@ func TestUpdateEmail(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -406,7 +406,7 @@ func TestUpdateEmailPreference(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -432,7 +432,7 @@ func TestUpdateEmailPreference(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -472,7 +472,7 @@ func TestUpdateEmailPreference(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -506,7 +506,7 @@ func TestUpdateEmailPreference(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -542,7 +542,7 @@ func TestUpdateEmailPreference(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -578,7 +578,7 @@ func TestUpdateEmailPreference(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -604,7 +604,7 @@ func TestUpdateEmailPreference(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -640,7 +640,7 @@ func TestGetEmailPreference(t *testing.T) {
|
|||
defer testutils.ClearData()
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
|
|||
|
|
@ -90,7 +90,7 @@ func TestRegister(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -133,7 +133,7 @@ func TestRegisterMissingParams(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -160,7 +160,7 @@ func TestRegisterMissingParams(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -188,7 +188,7 @@ func TestRegisterDuplicateEmail(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -225,7 +225,7 @@ func TestSignIn(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -255,7 +255,7 @@ func TestSignIn(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -286,7 +286,7 @@ func TestSignIn(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -317,7 +317,7 @@ func TestSignIn(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -360,7 +360,7 @@ func TestSignout(t *testing.T) {
|
|||
testutils.MustExec(t, db.Save(&session2), "preparing session2")
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -411,7 +411,7 @@ func TestSignout(t *testing.T) {
|
|||
testutils.MustExec(t, db.Save(&session2), "preparing session2")
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ func TestGetBooks(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -121,7 +121,7 @@ func TestGetBooksByName(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -206,7 +206,7 @@ func TestDeleteBook(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -356,7 +356,7 @@ func TestCreateBook(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -417,7 +417,7 @@ func TestCreateBookDuplicate(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -496,7 +496,7 @@ func TestUpdateBook(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
|
|||
|
|
@ -38,7 +38,7 @@ func TestCreateNote(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -171,7 +171,7 @@ func TestUpdateNote(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
@ -264,7 +264,7 @@ func TestDeleteNote(t *testing.T) {
|
|||
db := database.DBConn
|
||||
|
||||
// Setup
|
||||
server := mustNewServer(t, &App{
|
||||
server := MustNewServer(t, &App{
|
||||
Clock: clock.NewMock(),
|
||||
})
|
||||
defer server.Close()
|
||||
|
|
|
|||
|
|
@ -25,6 +25,7 @@ import (
|
|||
"html/template"
|
||||
"os"
|
||||
"path"
|
||||
"strconv"
|
||||
|
||||
"github.com/aymerick/douceur/inliner"
|
||||
"github.com/gobuffalo/packr/v2"
|
||||
|
|
@ -124,6 +125,30 @@ func NewEmail(from string, to []string, subject string) *Email {
|
|||
}
|
||||
}
|
||||
|
||||
type dialerParams struct {
|
||||
Host string
|
||||
Port int
|
||||
Username string
|
||||
Password string
|
||||
}
|
||||
|
||||
func getSMTPParams() (*dialerParams, error) {
|
||||
portStr := os.Getenv("SmtpPort")
|
||||
port, err := strconv.Atoi(portStr)
|
||||
if err != nil {
|
||||
return nil, errors.Wrap(err, "parsing SMTP port")
|
||||
}
|
||||
|
||||
p := &dialerParams{
|
||||
Host: os.Getenv("SmtpHost"),
|
||||
Port: port,
|
||||
Username: os.Getenv("SmtpUsername"),
|
||||
Password: os.Getenv("SmtpPassword"),
|
||||
}
|
||||
|
||||
return p, nil
|
||||
}
|
||||
|
||||
// Send sends the email
|
||||
func (e *Email) Send() error {
|
||||
// If not production, never actually send an email
|
||||
|
|
@ -134,16 +159,18 @@ func (e *Email) Send() error {
|
|||
return nil
|
||||
}
|
||||
|
||||
smtpPort := 465
|
||||
|
||||
m := gomail.NewMessage()
|
||||
m.SetHeader("From", e.from)
|
||||
m.SetHeader("To", e.to...)
|
||||
m.SetHeader("Subject", e.subject)
|
||||
m.SetBody("text/html", e.Body)
|
||||
|
||||
d := gomail.NewPlainDialer(os.Getenv("SmtpHost"), smtpPort, os.Getenv("SmtpUsername"), os.Getenv("SmtpPassword"))
|
||||
p, err := getSMTPParams()
|
||||
if err != nil {
|
||||
return errors.Wrap(err, "getting dialer params")
|
||||
}
|
||||
|
||||
d := gomail.NewPlainDialer(p.Host, p.Port, p.Username, p.Password)
|
||||
if err := d.DialAndSend(m); err != nil {
|
||||
return err
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue