added email notifier
This commit is contained in:
parent
aa9cc1dd2d
commit
09d681daf9
4 changed files with 89 additions and 1 deletions
2
go.mod
2
go.mod
|
@ -88,6 +88,8 @@ require (
|
|||
golang.org/x/sys v0.3.0 // indirect
|
||||
golang.org/x/text v0.5.0 // indirect
|
||||
google.golang.org/protobuf v1.28.0 // indirect
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc // indirect
|
||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df // indirect
|
||||
gopkg.in/ini.v1 v1.66.4 // indirect
|
||||
gopkg.in/xmlpath.v2 v2.0.0-20150820204837-860cbeca3ebc // indirect
|
||||
gopkg.in/yaml.v2 v2.4.0 // indirect
|
||||
|
|
4
go.sum
4
go.sum
|
@ -817,12 +817,16 @@ google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQ
|
|||
google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw=
|
||||
google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc h1:2gGKlE2+asNV9m7xrywl36YYNnBG5ZQ0r/BOOxqPpmk=
|
||||
gopkg.in/alexcesaro/quotedprintable.v3 v3.0.0-20150716171945-2caba252f4dc/go.mod h1:m7x9LTH6d71AHyAX77c9yqWCCa3UKHcVEj9y7hAtKDk=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df h1:n7WqCuqOuCbNr617RXOY0AWRXxgwEyPp2z+p0+hgMuE=
|
||||
gopkg.in/gomail.v2 v2.0.0-20160411212932-81ebce5c23df/go.mod h1:LRQQ+SO6ZHR7tOkpBDuZnXENFzX8qRjMDMyPD6BRkCw=
|
||||
gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s=
|
||||
gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4=
|
||||
gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k=
|
||||
|
|
82
notifiers/email.go
Normal file
82
notifiers/email.go
Normal file
|
@ -0,0 +1,82 @@
|
|||
package notifiers
|
||||
|
||||
import (
|
||||
"log"
|
||||
|
||||
"github.com/spf13/viper"
|
||||
"gopkg.in/gomail.v2"
|
||||
)
|
||||
|
||||
type EmailNotifier struct {
|
||||
Server string
|
||||
Port int
|
||||
From string
|
||||
User string
|
||||
To string
|
||||
Password string
|
||||
Debug bool
|
||||
}
|
||||
|
||||
func (email *EmailNotifier) Open() bool {
|
||||
if viper.IsSet("notifiers.email.server") {
|
||||
email.Server = viper.GetString("notifiers.email.server")
|
||||
} else {
|
||||
log.Println("Need 'server' var for email notifier")
|
||||
return false
|
||||
}
|
||||
if viper.IsSet("notifiers.email.port") {
|
||||
email.Port = viper.GetInt("notifiers.email.port")
|
||||
} else {
|
||||
log.Println("Need 'port' var for email notifier")
|
||||
return false
|
||||
}
|
||||
if viper.IsSet("notifiers.email.user") {
|
||||
email.User = viper.GetString("notifiers.email.user")
|
||||
} else {
|
||||
log.Println("Need 'user' var for email notifier")
|
||||
return false
|
||||
}
|
||||
if viper.IsSet("notifiers.email.from") {
|
||||
email.From = viper.GetString("notifiers.email.from")
|
||||
} else {
|
||||
log.Println("Need 'from' var for email notifier")
|
||||
return false
|
||||
}
|
||||
if viper.IsSet("notifiers.email.to") {
|
||||
email.To = viper.GetString("notifiers.email.to")
|
||||
} else {
|
||||
log.Println("Need 'to' var for email notifier")
|
||||
return false
|
||||
}
|
||||
if viper.IsSet("notifiers.email.password") {
|
||||
email.Password = viper.GetString("notifiers.email.password")
|
||||
} else {
|
||||
log.Println("Need 'password' var for email notifier")
|
||||
return false
|
||||
}
|
||||
log.Printf("Configured email: %s, %s", email.From, email.To)
|
||||
return true
|
||||
}
|
||||
|
||||
func (email *EmailNotifier) Message(message string) bool {
|
||||
m := gomail.NewMessage()
|
||||
m.SetHeaders(map[string][]string{
|
||||
"From": {email.From},
|
||||
"To": {email.To},
|
||||
"Subject": {"GoWatch"},
|
||||
})
|
||||
m.SetBody("text/html", message)
|
||||
|
||||
d := gomail.NewDialer(email.Server, email.Port, email.User, email.Password)
|
||||
|
||||
err := d.DialAndSend(m)
|
||||
if err != nil {
|
||||
log.Println("Could not send email:", err)
|
||||
return false
|
||||
}
|
||||
return true
|
||||
}
|
||||
|
||||
func (email *EmailNotifier) Close() bool {
|
||||
return true
|
||||
}
|
2
todo.md
2
todo.md
|
@ -4,7 +4,7 @@
|
|||
- readme instructions
|
||||
- ~~discord~~
|
||||
- readme instructions
|
||||
- email
|
||||
- ~~email~~
|
||||
- postfix compose example?
|
||||
- matrix?
|
||||
- twitter?
|
||||
|
|
Loading…
Add table
Reference in a new issue