email/email.go (view raw)
1package email
2
3import (
4 "net/smtp"
5)
6
7// EmailConfig rappresenta la configurazione necessaria per inviare un'email
8type Client struct {
9 email string
10
11 auth smtp.Auth
12 addr string
13}
14
15// Email rappresenta il contenuto dell'email
16type Email struct {
17 To []string
18 Subject string
19 Body string
20}
21
22func NewClient(senderEmail, password, host, port string) *Client {
23 return &Client{
24 addr: host + ":" + port,
25 auth: smtp.PlainAuth("", senderEmail, password, host),
26 }
27}
28
29// Send invia l'email utilizzando la configurazione fornita
30func (config *Client) Send(email Email) error {
31 // Costruzione del messaggio
32 msg := "From: " + config.email + "\n" +
33 "To: " + email.To[0] + "\n" +
34 "Subject: " + email.Subject + "\n\n" +
35 email.Body
36
37 // Invio email tramite il server SMTP
38 err := smtp.SendMail(config.addr, config.auth, config.email, email.To, []byte(msg))
39 if err != nil {
40 return err
41 }
42
43 return nil
44}