76 lines
1.7 KiB
Go
76 lines
1.7 KiB
Go
/*
|
|
* Amsterdam Web Communities System
|
|
* Copyright (c) 2025 Erbosoft Metaverse Design Solutions, All Rights Reserved
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/.
|
|
*/
|
|
|
|
// Package email contains support for E-mail messages sent by Amsterdam.
|
|
package email
|
|
|
|
import "fmt"
|
|
|
|
// Message is the interface for an E-mail message to be sent.
|
|
type Message interface {
|
|
SetFrom(string, string)
|
|
AddTo(string, string)
|
|
AddCC(string, string)
|
|
AddBCC(string, string)
|
|
SetSubject(string)
|
|
SetText(string)
|
|
AddHeader(string, string)
|
|
}
|
|
|
|
type amMessage struct {
|
|
from string
|
|
to []string
|
|
cc []string
|
|
bcc []string
|
|
subject string
|
|
text string
|
|
headers map[string]string
|
|
}
|
|
|
|
func formatAddress(addr string, name string) string {
|
|
if name == "" {
|
|
return addr
|
|
} else {
|
|
return fmt.Sprintf("%s <%s>", name, addr)
|
|
}
|
|
}
|
|
|
|
func (m *amMessage) SetFrom(addr string, name string) {
|
|
m.from = formatAddress(addr, name)
|
|
}
|
|
|
|
func (m *amMessage) AddTo(addr string, name string) {
|
|
m.to = append(m.to, formatAddress(addr, name))
|
|
}
|
|
|
|
func (m *amMessage) AddCC(addr string, name string) {
|
|
m.cc = append(m.cc, formatAddress(addr, name))
|
|
}
|
|
|
|
func (m *amMessage) AddBCC(addr string, name string) {
|
|
m.bcc = append(m.bcc, formatAddress(addr, name))
|
|
}
|
|
|
|
func (m *amMessage) SetSubject(s string) {
|
|
m.subject = s
|
|
}
|
|
|
|
func (m *amMessage) SetText(txt string) {
|
|
m.text = txt
|
|
}
|
|
|
|
func (m *amMessage) AddHeader(name string, value string) {
|
|
m.headers[name] = value
|
|
}
|
|
|
|
func AmNewEmailMessage() Message {
|
|
rc := amMessage{to: make([]string, 0), cc: make([]string, 0), bcc: make([]string, 0), headers: make(map[string]string)}
|
|
return &rc
|
|
}
|