sender.go

 1package sender
 2
 3import (
 4	"fmt"
 5	"net/smtp"
 6
 7	"github.com/andrinoff/email-cli/config" // Import the local config package
 8)
 9
10// SendEmail sends an email using the provided configuration and content.
11func SendEmail(cfg *config.Config, to []string, subject, body string) error {
12	var smtpHost, smtpPort string
13
14	switch cfg.ServiceProvider {
15	case "gmail":
16		smtpHost = "smtp.gmail.com"
17		smtpPort = "587"
18	case "icloud":
19		smtpHost = "smtp.mail.me.com"
20		smtpPort = "587"
21	default:
22		return fmt.Errorf("unsupported service provider: %s", cfg.ServiceProvider)
23	}
24
25	auth := smtp.PlainAuth("", cfg.Email, cfg.Password, smtpHost)
26	msg := []byte("To: " + to[0] + "\r\n" +
27		"Subject: " + subject + "\r\n" +
28		"\r\n" +
29		body)
30	addr := smtpHost + ":" + smtpPort
31	return smtp.SendMail(addr, auth, cfg.Email, to, msg)
32}