Documentation
¶
Index ¶
- func BuildMime(from string, msg *Message) ([]byte, error)
- func GenerateBoundary() string
- func NormalizeEmails(in []string) []string
- func SanitizeFilename(name string) string
- func SanitizeHeaderKey(k string) string
- func SanitizeHeaderValue(v string) string
- func WriteBase64(w io.Writer, data []byte)
- func WriteHeader(w io.Writer, key, value string)
- func WriteIndented(b *strings.Builder, s string, indent int)
- func WriteQuotedPrintable(w io.Writer, s string) error
- type Attachment
- type Config
- type Mailer
- func NewNullMailer() Mailer
- func NewSESMailer(region, accessKeyID, secretAccessKey, defaultFrom, configurationSet string) (Mailer, error)
- func NewSMTPMailer(host string, port int, username, password, defaultFrom string) (Mailer, error)
- func NewTransport(ctx context.Context, cfg *Config) (Mailer, error)
- func NewTransportFromEnv(ctx context.Context) (Mailer, error)
- type Message
- type NullMailer
- type SESMailer
- type SMTPMailer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func BuildMime ¶
BuildMime membangun email MIME mentah (headers + body) dari informasi yang diberikan. Fungsi ini reusable untuk berbagai transport (SMTP, API provider, dsb).
Aturan: - Mengisi header standar: From, To, Cc, Subject (MIME-encoded), Date, MIME-Version - Header kustom dari msg.Headers akan disisipkan setelah disanitasi - Body mendukung text/plain dan/atau text/html, memakai multipart/alternative jika keduanya ada - Attachment didukung via multipart/mixed dengan base64 encoding - Bcc tidak dituliskan ke header (hanya digunakan di envelope oleh transport)
func GenerateBoundary ¶
func GenerateBoundary() string
GenerateBoundary membuat boundary acak untuk multipart MIME.
func NormalizeEmails ¶
NormalizeEmails menormalkan daftar email dengan memangkas spasi dan menghapus entri kosong.
func SanitizeFilename ¶
SanitizeFilename membersihkan nama file lampiran dari karakter terlarang.
func SanitizeHeaderKey ¶
SanitizeHeaderKey membersihkan key header dari karakter terlarang dan spasi.
func SanitizeHeaderValue ¶
SanitizeHeaderValue membersihkan value header dari karakter terlarang dan spasi.
func WriteBase64 ¶
WriteBase64 menuliskan data dalam encoding base64 dengan line wrap 76 karakter per baris sesuai rekomendasi MIME.
func WriteHeader ¶
WriteHeader menuliskan header email single-line dengan CRLF. Abaikan jika key atau value kosong.
func WriteIndented ¶
WriteIndented menuliskan teks dengan indentasi ke builder (untuk logging/presentation).
Types ¶
type Attachment ¶
type Attachment struct {
// Filename adalah nama file yang akan terlihat oleh penerima.
Filename string
// ContentType adalah MIME type dari lampiran (mis. "application/pdf").
ContentType string
// Data adalah isi file lampiran dalam bentuk byte slice.
Data []byte
}
Attachment mewakili file lampiran email.
type Config ¶
type Config struct {
Transport string
// FromAddress adalah alamat email default pengirim global (meng-override SMTP.From / SES.From).
FromAddress string
// FromName adalah nama pengirim default global. Jika diisi, header From akan berbentuk 'Name <address>'.
FromName string
SMTP struct {
// Host adalah host SMTP server.
Host string
// Port adalah port SMTP server.
Port int
// Username adalah username untuk autentikasi SMTP.
Username string
// Password adalah password untuk autentikasi SMTP.
Password string
// From adalah alamat email default pengirim.
From string
}
SES struct {
// Region AWS (mis. ap-southeast-1)
Region string
// AccessKeyID untuk autentikasi AWS (opsional jika pakai default provider chain)
AccessKeyID string
// SecretAccessKey untuk autentikasi AWS (opsional jika pakai default provider chain)
SecretAccessKey string
// From adalah alamat email default pengirim.
From string
// ConfigurationSet opsional untuk SES v2
ConfigurationSet string
}
}
Config menyimpan konfigurasi mail. Gunakan FromEnv() untuk memuat dari variabel environment.
Transport: - "null" : Pengiriman in-memory/log (untuk pengujian); alias: "log", "mock" - "smtp" : Pengiriman melalui SMTP - "ses" : Pengiriman melalui AWS SES
func FromEnv ¶
func FromEnv() *Config
FromEnv memuat nilai Config mail dari variabel environment.
Variabel: - MAIL_TRANSPORT: null | log | mock | smtp | ses (default: null) - MAIL_FROM_ADDRESS, MAIL_FROM_NAME - SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD, SMTP_FROM (fallback bila MAIL_FROM_* kosong) - AWS_REGION, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY - SES_FROM, SES_CONFIGURATION_SET (SES_FROM fallback bila MAIL_FROM_* kosong)
type Mailer ¶
type Mailer interface {
// Send mengirim email dengan informasi yang diberikan dalam pesan.
// Mengembalikan error jika pengiriman gagal.
Send(ctx context.Context, msg *Message) error
}
Mailer adalah antarmuka untuk mengirim email. Implementasi bertanggung jawab untuk menangani retry, timeout, dan error handling.
func NewSESMailer ¶
func NewSESMailer(region, accessKeyID, secretAccessKey, defaultFrom, configurationSet string) (Mailer, error)
NewSESMailer membuat Mailer SES baru menggunakan AWS SDK v2 (SESv2). region dan from wajib. Jika accessKeyID/secretAccessKey kosong, akan memakai default provider chain.
func NewSMTPMailer ¶
NewSMTPMailer membuat Mailer SMTP baru.
func NewTransport ¶
NewTransport membuat Mailer berdasarkan Config yang diberikan.
type Message ¶
type Message struct {
// From adalah alamat email pengirim.
From string
// To adalah daftar alamat email penerima.
To []string
// Subject adalah subjek email.
Subject string
// HTML adalah isi email dalam format HTML.
HTML string
// PlainText adalah isi email dalam format plaintext.
PlainText string
// Cc adalah daftar alamat email yang di-copy.
Cc []string
// Bcc adalah daftar alamat email yang di-hidden copy.
Bcc []string
// ReplyTo adalah daftar alamat email untuk header Reply-To.
ReplyTo []string
// MessageID adalah nilai untuk header Message-ID (opsional).
// Jika kosong, transport dapat membiarkan server/pustaka menetapkan nilainya.
MessageID string
// Headers adalah header tambahan untuk tracking/analytic, dsb.
Headers map[string]string
// Tags adalah pasangan kunci-nilai untuk email tags (misalnya SES).
// Implementasi transport dapat memetakan ke fitur tagging masing-masing provider.
Tags map[string]string
// Attachments adalah daftar lampiran yang akan dikirim bersama email.
Attachments []Attachment
}
Message mewakili email yang akan dikirim.
type NullMailer ¶
type NullMailer struct{}
NullMailer adalah implementasi Mailer yang tidak benar-benar mengirim email. Ini hanya mencetak isi email ke stdout untuk tujuan testing/logging.
type SESMailer ¶
type SESMailer struct {
// contains filtered or unexported fields
}
SESMailer adalah implementasi Mailer menggunakan AWS SES v2.
type SMTPMailer ¶
type SMTPMailer struct {
// contains filtered or unexported fields
}
SMTPMailer adalah implementasi Mailer menggunakan protokol SMTP.