SMTP
Golang
Send emails through Lettermint’s SMTP relay using Go’s net/smtp package.
Basic Configuration
Copy
package main
import (
"crypto/tls"
"fmt"
"net/smtp"
"strings"
)
const (
SMTPHost = "smtp.lettermint.co"
SMTPPort = "587"
Username = "lettermint"
APIToken = "your-api-token"
)
func sendEmail(to, subject, body string) error {
from := "sender@yourdomain.com"
// Message
msg := []byte(fmt.Sprintf(
"From: %s\r\n"+
"To: %s\r\n"+
"Subject: %s\r\n"+
"Content-Type: text/html; charset=UTF-8\r\n"+
"\r\n"+
"%s\r\n",
from, to, subject, body,
))
// Authentication
auth := smtp.PlainAuth("", Username, APIToken, SMTPHost)
// TLS config
tlsConfig := &tls.Config{
InsecureSkipVerify: false,
ServerName: SMTPHost,
}
// Connect and send
conn, err := tls.Dial("tcp", SMTPHost+":"+SMTPPort, tlsConfig)
if err != nil {
return err
}
defer conn.Close()
client, err := smtp.NewClient(conn, SMTPHost)
if err != nil {
return err
}
defer client.Quit()
if err = client.Auth(auth); err != nil {
return err
}
if err = client.Mail(from); err != nil {
return err
}
if err = client.Rcpt(to); err != nil {
return err
}
writer, err := client.Data()
if err != nil {
return err
}
_, err = writer.Write(msg)
if err != nil {
return err
}
return writer.Close()
}
func main() {
err := sendEmail(
"recipient@example.com",
"Test Email",
"<h1>Hello!</h1><p>This is a test email.</p>",
)
if err != nil {
fmt.Printf("Error: %v\n", err)
} else {
fmt.Println("Email sent successfully")
}
}
Using Third-Party Libraries
With gomail
Copy
go get gopkg.in/gomail.v2
Copy
package main
import (
"gopkg.in/gomail.v2"
)
func sendEmailWithGomail() error {
m := gomail.NewMessage()
m.SetHeader("From", "sender@yourdomain.com")
m.SetHeader("To", "recipient@example.com")
m.SetHeader("Subject", "Test Email")
m.SetBody("text/html", "<h1>Hello!</h1><p>This is a test email.</p>")
d := gomail.NewDialer("smtp.lettermint.co", 587, "lettermint", "your-api-token")
return d.DialAndSend(m)
}
Assistant
Responses are generated using AI and may contain mistakes.