go-wiki/services/mail.go
2020-03-16 19:00:03 +01:00

66 lines
1 KiB
Go

package services
import (
"fmt"
"log"
"net/smtp"
)
// Mail holds contact form information
type Mail struct {
// Contact mail address
from string
// Mail body
message string
}
// Sender objects implements Send() method
type Sender interface {
Send()
}
var _ Sender = &Mail{} // verifies if Mail implements Sender
var hostMail string = "ruidy.nemausat@gmail.com"
var smtpServer string = "smtp.gmail.com:587"
// NewMail creates a Mail with from and body fields
func NewMail(from, body string) Mail {
return Mail{from, body}
}
// Send runs a mail client and send mail
func (m *Mail) Send() {
c, err := smtp.Dial(smtpServer)
if err != nil {
log.Fatal(err)
}
// c.StartTLS()
if err := c.Mail(hostMail); err != nil {
log.Fatal(err)
}
if err := c.Rcpt(hostMail); err != nil {
log.Fatal(err)
}
wc, err := c.Data()
if err != nil {
log.Fatal(err)
}
if _, err := fmt.Fprintf(wc, m.message); err != nil {
log.Fatal(err)
}
if err := wc.Close(); err != nil {
log.Fatal(err)
}
err = c.Quit()
if err != nil {
log.Fatal(err)
}
}