mirror of
https://github.com/rjNemo/go-wiki
synced 2026-06-06 02:36:40 +00:00
66 lines
1 KiB
Go
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)
|
|
}
|
|
}
|