mirror of
https://github.com/wneessen/go-mail.git
synced 2024-11-22 05:40:50 +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 holds the SendError in case a Msg could not be delivered during the Client.Send operation
|
||||||
sendError error
|
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
|
// 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
|
// SetCharset sets the encoding charset of the Msg
|
||||||
func (m *Msg) SetCharset(c Charset) {
|
func (m *Msg) SetCharset(c Charset) {
|
||||||
m.charset = c
|
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
|
// checkUserAgent checks if a useragent/x-mailer is set and if not will set a default
|
||||||
// version string
|
// version string
|
||||||
func (m *Msg) checkUserAgent() {
|
func (m *Msg) checkUserAgent() {
|
||||||
|
if m.noDefaultUserAgent {
|
||||||
|
return
|
||||||
|
}
|
||||||
_, uaok := m.genHeader[HeaderUserAgent]
|
_, uaok := m.genHeader[HeaderUserAgent]
|
||||||
_, xmok := m.genHeader[HeaderXMailer]
|
_, xmok := m.genHeader[HeaderXMailer]
|
||||||
if !uaok && !xmok {
|
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