mirror of
https://github.com/wneessen/go-mail.git
synced 2024-11-22 13:50:49 +01:00
Compare commits
6 commits
b2f735854d
...
21d7b367bd
Author | SHA1 | Date | |
---|---|---|---|
21d7b367bd | |||
180f6f3a63 | |||
c0cf31b6c4 | |||
5c143cb74c | |||
|
299490f8fa | ||
|
a24906d185 |
2 changed files with 71 additions and 0 deletions
13
msg.go
13
msg.go
|
@ -117,6 +117,9 @@ type Msg struct {
|
|||
|
||||
// sendError holds the SendError in case a Msg could not be delivered during the Client.Send operation
|
||||
sendError error
|
||||
|
||||
// noDefaultUserAgent indicates whether the default User Agent will be excluded for the Msg when it's sent.
|
||||
noDefaultUserAgent bool
|
||||
}
|
||||
|
||||
// SendmailPath is the default system path to the sendmail binary
|
||||
|
@ -192,6 +195,13 @@ func WithPGPType(pt PGPType) MsgOption {
|
|||
}
|
||||
}
|
||||
|
||||
// WithNoDefaultUserAgent configures the Msg to not use the default User Agent
|
||||
func WithNoDefaultUserAgent() MsgOption {
|
||||
return func(m *Msg) {
|
||||
m.noDefaultUserAgent = true
|
||||
}
|
||||
}
|
||||
|
||||
// SetCharset sets the encoding charset of the Msg
|
||||
func (m *Msg) SetCharset(c Charset) {
|
||||
m.charset = c
|
||||
|
@ -1181,6 +1191,9 @@ func (m *Msg) setEncoder() {
|
|||
// checkUserAgent checks if a useragent/x-mailer is set and if not will set a default
|
||||
// version string
|
||||
func (m *Msg) checkUserAgent() {
|
||||
if m.noDefaultUserAgent {
|
||||
return
|
||||
}
|
||||
_, uaok := m.genHeader[HeaderUserAgent]
|
||||
_, xmok := m.genHeader[HeaderXMailer]
|
||||
if !uaok && !xmok {
|
||||
|
|
58
msg_test.go
58
msg_test.go
|
@ -3161,3 +3161,61 @@ func TestMsg_BccFromString(t *testing.T) {
|
|||
})
|
||||
}
|
||||
}
|
||||
|
||||
// TestMsg_checkUserAgent tests the checkUserAgent method of the Msg
|
||||
func TestMsg_checkUserAgent(t *testing.T) {
|
||||
tests := []struct {
|
||||
name string
|
||||
noDefaultUserAgent bool
|
||||
genHeader map[Header][]string
|
||||
wantUserAgent string
|
||||
sf bool
|
||||
}{
|
||||
{
|
||||
name: "check default user agent",
|
||||
noDefaultUserAgent: false,
|
||||
wantUserAgent: fmt.Sprintf("go-mail v%s // https://github.com/wneessen/go-mail", VERSION),
|
||||
sf: false,
|
||||
},
|
||||
{
|
||||
name: "check no default user agent",
|
||||
noDefaultUserAgent: true,
|
||||
wantUserAgent: "",
|
||||
sf: true,
|
||||
},
|
||||
{
|
||||
name: "check if ua and xm is already set",
|
||||
noDefaultUserAgent: false,
|
||||
genHeader: map[Header][]string{
|
||||
HeaderUserAgent: {"custom UA"},
|
||||
HeaderXMailer: {"custom XM"},
|
||||
},
|
||||
wantUserAgent: "custom UA",
|
||||
sf: false,
|
||||
},
|
||||
}
|
||||
for _, tt := range tests {
|
||||
t.Run(tt.name, func(t *testing.T) {
|
||||
msg := &Msg{
|
||||
noDefaultUserAgent: tt.noDefaultUserAgent,
|
||||
genHeader: tt.genHeader,
|
||||
}
|
||||
msg.checkUserAgent()
|
||||
gotUserAgent := ""
|
||||
if val, ok := msg.genHeader[HeaderUserAgent]; ok {
|
||||
gotUserAgent = val[0] // Assuming the first one is the needed value
|
||||
}
|
||||
if gotUserAgent != tt.wantUserAgent && !tt.sf {
|
||||
t.Errorf("UserAgent got = %v, want = %v", gotUserAgent, tt.wantUserAgent)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
// TestNewMsgWithMIMEVersion tests WithMIMEVersion and Msg.SetMIMEVersion
|
||||
func TestNewMsgWithNoDefaultUserAgent(t *testing.T) {
|
||||
m := NewMsg(WithNoDefaultUserAgent())
|
||||
if m.noDefaultUserAgent != true {
|
||||
t.Errorf("WithNoDefaultUserAgent() failed. Expected: %t, got: %t", true, false)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue