mirror of https://github.com/usememos/memos.git
48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
package email
|
|
|
|
import (
|
|
"fmt"
|
|
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
// Config represents the SMTP configuration for email sending.
|
|
// These settings should be provided by the self-hosted instance administrator.
|
|
type Config struct {
|
|
// SMTPHost is the SMTP server hostname (e.g., "smtp.gmail.com")
|
|
SMTPHost string
|
|
// SMTPPort is the SMTP server port (common: 587 for TLS, 465 for SSL, 25 for unencrypted)
|
|
SMTPPort int
|
|
// SMTPUsername is the SMTP authentication username (usually the email address)
|
|
SMTPUsername string
|
|
// SMTPPassword is the SMTP authentication password or app-specific password
|
|
SMTPPassword string
|
|
// FromEmail is the email address that will appear in the "From" field
|
|
FromEmail string
|
|
// FromName is the display name that will appear in the "From" field
|
|
FromName string
|
|
// UseTLS enables STARTTLS encryption (recommended for port 587)
|
|
UseTLS bool
|
|
// UseSSL enables SSL/TLS encryption (for port 465)
|
|
UseSSL bool
|
|
}
|
|
|
|
// Validate checks if the configuration is valid.
|
|
func (c *Config) Validate() error {
|
|
if c.SMTPHost == "" {
|
|
return errors.New("SMTP host is required")
|
|
}
|
|
if c.SMTPPort <= 0 || c.SMTPPort > 65535 {
|
|
return errors.New("SMTP port must be between 1 and 65535")
|
|
}
|
|
if c.FromEmail == "" {
|
|
return errors.New("from email is required")
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// GetServerAddress returns the SMTP server address in the format "host:port".
|
|
func (c *Config) GetServerAddress() string {
|
|
return fmt.Sprintf("%s:%d", c.SMTPHost, c.SMTPPort)
|
|
}
|