Added tool for sending emails
Cette révision appartient à :
Parent
acaa68eb66
révision
9a8783a071
3 fichiers modifiés avec 81 ajouts et 0 suppressions
|
@ -8,6 +8,7 @@ install:
|
|||
- go get github.com/jinzhu/gorm
|
||||
- go get github.com/Sirupsen/logrus
|
||||
- go get gopkg.in/natefinch/lumberjack.v2
|
||||
- go get gopkg.in/gomail.v2
|
||||
- go build
|
||||
deploy:
|
||||
provider: releases
|
||||
|
|
15
config/email.go
Fichier normal
15
config/email.go
Fichier normal
|
@ -0,0 +1,15 @@
|
|||
package config
|
||||
|
||||
import "time"
|
||||
|
||||
const (
|
||||
SendEmail = true
|
||||
EmailFrom = "donotrespond@nyaa.pantsu.cat"
|
||||
EmailTestTo = ""
|
||||
EmailHost = "localhost"
|
||||
EmailUsername = ""
|
||||
EmailPassword = ""
|
||||
EmailPort = 465
|
||||
// EmailTimeout = 80 * time.Millisecond
|
||||
EmailTimeout = 10 * time.Second
|
||||
)
|
65
util/email/email.go
Fichier normal
65
util/email/email.go
Fichier normal
|
@ -0,0 +1,65 @@
|
|||
package email
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"path/filepath"
|
||||
"sync/atomic"
|
||||
"time"
|
||||
|
||||
"github.com/ewhal/nyaa/config"
|
||||
"github.com/ewhal/nyaa/util/log"
|
||||
gomail "gopkg.in/gomail.v2"
|
||||
)
|
||||
|
||||
type EmailError error
|
||||
|
||||
var (
|
||||
mailer = InitGomail()
|
||||
)
|
||||
|
||||
func InitGomail() *gomail.Mailer {
|
||||
mailer := gomail.NewMailer(config.EmailHost, config.EmailUsername, config.EmailPassword, config.EmailPort)
|
||||
return mailer
|
||||
}
|
||||
|
||||
func SendEmailFromAdmin(to string, subject string, body string, bodyHTML string) error {
|
||||
msg := gomail.NewMessage()
|
||||
msg.SetHeader("From", config.EmailFrom)
|
||||
msg.SetHeader("To", to, config.EmailTestTo)
|
||||
msg.SetHeader("Subject", subject)
|
||||
msg.SetBody("text/plain", body)
|
||||
msg.AddAlternative("text/html", bodyHTML)
|
||||
log.Debugf("to : %s", to)
|
||||
log.Debugf("subject : %s", subject)
|
||||
log.Debugf("body : %s", body)
|
||||
log.Debugf("bodyHTML : %s", bodyHTML)
|
||||
if config.SendEmail {
|
||||
log.Debug("SendEmail performed.")
|
||||
|
||||
err := mailer.DialAndSend(msg);
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
||||
func SendTestEmail() error {
|
||||
msg := gomail.NewMessage()
|
||||
msg.SetHeader("From", config.EmailFrom)
|
||||
msg.SetHeader("To", config.EmailTestTo)
|
||||
msg.SetAddressHeader("Cc", config.EmailTestTo, "NyaaPantsu")
|
||||
msg.SetHeader("Subject", "Hi(안녕하세요)?!")
|
||||
msg.SetBody("text/plain", "Hi(안녕하세요)?!")
|
||||
msg.AddAlternative("text/html", "<p><b>Nowplay(나우플레이)</b> means <i>Let's play</i>!!?</p>")
|
||||
path, err := filepath.Abs("img/megumin.png")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
f, err := gomail.OpenFile(path)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
msg.Attach(f)
|
||||
// SendEmail(msg)
|
||||
err := mailer.DialAndSend(msg);
|
||||
return err
|
||||
}
|
Référencer dans un nouveau ticket