Skip to content

Commit 3cfc52c

Browse files
committed
feat: upgrade to UPONU go-smtp
1 parent 2f94676 commit 3cfc52c

File tree

11 files changed

+1446
-73
lines changed

11 files changed

+1446
-73
lines changed

.github/workflows/go.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,12 +11,12 @@ jobs:
1111
build:
1212
runs-on: ubuntu-latest
1313
steps:
14-
- uses: actions/checkout@v2
14+
- uses: actions/checkout@v4
1515

1616
- name: Set up Go
17-
uses: actions/setup-go@v2
17+
uses: actions/setup-go@v5
1818
with:
19-
go-version: 1.17
19+
go-version: 1.24.3
2020

2121
- name: Build
2222
run: go build -v ./...

.gitignore

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,5 +11,5 @@
1111
# Output of the go coverage tool, specifically when used with LiteIDE
1212
*.out
1313

14-
# Dependency directories (remove the comment below to include it)
15-
# vendor/
14+
go.work*
15+
coverage.*

.golangci.yml

Lines changed: 137 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,137 @@
1+
version: "2"
2+
linters:
3+
enable:
4+
- gosec
5+
- revive
6+
- errcheck
7+
settings:
8+
errcheck:
9+
exclude-functions:
10+
- os.Remove
11+
godot:
12+
scope: toplevel
13+
exclude:
14+
- '^todo:'
15+
- '^fixme:'
16+
- //
17+
gosec:
18+
excludes:
19+
revive:
20+
enable-all-rules: true
21+
rules:
22+
- name: nested-structs
23+
disabled: true
24+
- name: redundant-import-alias
25+
severity: warning
26+
disabled: true
27+
- name: banned-characters
28+
arguments:
29+
- Ω
30+
- Σ
31+
- σ
32+
severity: warning
33+
disabled: false
34+
- name: function-result-limit
35+
arguments:
36+
- 4
37+
severity: warning
38+
disabled: false
39+
- name: function-length
40+
arguments:
41+
- 80
42+
- 200
43+
severity: warning
44+
disabled: false
45+
- name: line-length-limit
46+
arguments:
47+
- 120
48+
severity: warning
49+
disabled: true
50+
- name: cyclomatic
51+
arguments:
52+
- 3
53+
severity: warning
54+
disabled: true
55+
- name: cognitive-complexity
56+
arguments:
57+
- 40
58+
severity: warning
59+
disabled: false
60+
- name: argument-limit
61+
arguments:
62+
- 8
63+
severity: warning
64+
disabled: false
65+
- name: file-header
66+
severity: warning
67+
disabled: true
68+
- name: max-public-structs
69+
arguments:
70+
- 3
71+
severity: warning
72+
disabled: true
73+
- name: add-constant
74+
arguments:
75+
- allowFloats: 0.0,0.,1.0,1.,2.0,2.
76+
allowInts: 0,1,2
77+
allowStrs: '""'
78+
maxLitCount: "3"
79+
severity: warning
80+
disabled: true
81+
- name: unhandled-error
82+
arguments:
83+
- fmt.Printf
84+
- myFunction
85+
severity: warning
86+
disabled: true
87+
- name: comment-spacings
88+
severity: warning
89+
disabled: true
90+
- name: package-comments
91+
severity: warning
92+
disabled: true
93+
- name: flag-parameter
94+
severity: warning
95+
disabled: true
96+
- name: exported
97+
severity: warning
98+
disabled: false
99+
- name: useless-break
100+
severity: warning
101+
disabled: true
102+
- name: import-shadowing
103+
severity: warning
104+
disabled: true
105+
- name: deep-exit
106+
severity: warning
107+
disabled: true
108+
- name: var-naming
109+
severity: warning
110+
disabled: true
111+
- name: var-declaration
112+
severity: warning
113+
disabled: true
114+
- name: confusing-naming
115+
severity: warning
116+
disabled: true
117+
exclusions:
118+
generated: lax
119+
paths:
120+
- filelink
121+
- audit
122+
- addin
123+
- third_party$
124+
- builtin$
125+
- examples$
126+
formatters:
127+
enable:
128+
- gofumpt
129+
exclusions:
130+
generated: lax
131+
paths:
132+
- filelink
133+
- audit
134+
- addin
135+
- third_party$
136+
- builtin$
137+
- examples$

Makefile

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,21 @@ race:
99
go test -race
1010

1111
cover:
12-
go test -coverprofile=coverage.out
13-
go tool cover -html=coverage.out
12+
go test ./... -race -coverprofile=coverage.out
13+
go tool cover -html=coverage.out -o coverage.html
14+
go tool cover -func=coverage.out
15+
16+
fumpt:
17+
@echo "Fumpting go"
18+
@go tool gofumpt -l -w .
19+
20+
lint: fumpt
21+
@echo "Linting go"
22+
@go tool golangci-lint run
1423

1524
bench:
16-
go test -bench=.
25+
@go test -bench=.
1726

1827
vet:
19-
go vet ./...
28+
@go vet ./...
2029

examples/simple/main.go

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,34 @@
11
package main
22

33
import (
4+
"context"
45
"fmt"
5-
"log"
6+
"log/slog"
67
"net/smtp"
8+
"os"
9+
"os/signal"
710
"time"
811

912
"github.com/davrux/go-smtptester"
1013
)
1114

1215
func main() {
16+
ctx, cancel := signal.NotifyContext(context.Background(), os.Interrupt)
17+
defer cancel()
18+
1319
s := smtptester.Standard()
1420

1521
go func() {
16-
if err := s.ListenAndServe(); err != nil {
17-
log.Printf("smtp server response %s", err)
22+
if err := s.ListenAndServe(ctx); err != nil {
23+
slog.Error("smtp server response %s", slog.Any("error", err))
1824
}
1925
}()
2026

21-
defer s.Close()
27+
defer func() {
28+
if err := s.Close(ctx); err != nil {
29+
slog.Error("error closing server", slog.Any("error", err))
30+
}
31+
}()
2232

2333
// Wait a second to let the server come up.
2434
time.Sleep(time.Second)
@@ -27,8 +37,8 @@ func main() {
2737
2838
2939
msg := []byte("Test\r\n")
30-
if err := smtp.SendMail(s.Addr, nil, from, to, msg); err != nil {
31-
log.Fatalf("error sending mail %+v", err)
40+
if err := smtp.SendMail(s.Address(), nil, from, to, msg); err != nil {
41+
panic(err)
3242
}
3343

3444
// Lookup email.

0 commit comments

Comments
 (0)