mail_sender

package
v0.0.0-...-bcab678 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Dec 12, 2025 License: MIT Imports: 32 Imported by: 0

README

mail-sender

This module provides mail sender tools.

Features:

  • Custom message Prefix;
  • Sent using GMAIL or SMTP;
  • Sent mail test;
Settings page
Settings page
Gmail Settings
Gmail Settings
SMTP Settings
SMTP Settings

Send Test action

Send Test action
Send Test action
Send Test action form
Send Test action form

Documentation

Index

Constants

View Source
const MessagesKey i18n.ModuleKey = "rqv-admin/mail-sender"

Variables

View Source
var (
	Messages_en_US = &Messages{
		MailSender:                        "Mail Sender",
		TestMessageSubject:                "Test Send Mail",
		TestMessageBody:                   "Test OK.",
		MailSenderSubjectPrefix:           "Subject Prefix",
		MailSenderSender:                  "Sender",
		MailSenderGmail:                   "GMAIL",
		MailSenderSMTP:                    "SMTP",
		MailSender_Action_TestSendMail:    "Send Test Mail",
		GmailSenderConfiguredSuccessfully: "Gmail Sender configured Successfully",
		GmailSenderLogOutSuccessfully:     "Gmail Log Out Successfully",
		GmailSenderCallbackURI:            "CallbackURI",
		GmailSenderCredentials:            "App Credentials",
		GmailSenderCredentialsFile:        "App Credentials File",
		GmailSenderCredentialsFile_Hint:   "The .json file, available for download by Desktop Application on https://console.cloud.google.com",
		SmtpSenderTLS:                     "TLS",
		SmtpSenderServer:                  "Server",
		SmtpSenderPort:                    "Port",
		SmtpSenderFromMail:                "FromMail",
		SmtpSenderUser:                    "User",
		SmtpSenderPassword:                "Password",
		SendMailTestFormTo:                "To",
		SendMailTestFormSubject:           "Subject",
		SendMailTestFormMessage:           "Message",
		SendMailTestFormSender:            "Sender",
		ErrGmailSenderCredentialsInvalid:  "The credentials is not a valid DESKTOP APPLICATION credentials",
		SendMailSuccessfully:              "Send mail successfully",
	}

	Messages_pt_BR = &Messages{
		MailSender:                        "Envio de Email",
		TestMessageSubject:                "Teste de envio de email",
		TestMessageBody:                   "Teste executado com sucesso.",
		MailSenderSubjectPrefix:           "Prefixo do Assunto",
		MailSenderSender:                  "Método de Envio",
		MailSenderGmail:                   "GMAIL",
		MailSenderSMTP:                    "SMTP",
		MailSender_Action_TestSendMail:    "Enviar email de Teste",
		GmailSenderConfiguredSuccessfully: "Envio por Gmail configurado com sucesso",
		GmailSenderLogOutSuccessfully:     "Desconectado do GMAIL com sucesso",
		GmailSenderCallbackURI:            "CallbackURI",
		GmailSenderCredentials:            "Credenciais de App",
		GmailSenderCredentialsFile:        "Arquivo de Credenciais de App",
		GmailSenderCredentialsFile_Hint:   "Arquivo .json com as credenciais de acesso. Este arquivo está disponível para Download da Aplicação Desktop em https://console.cloud.google.com",
		SmtpSenderTLS:                     "TLS",
		SmtpSenderServer:                  "Servidor",
		SmtpSenderPort:                    "Porta",
		SmtpSenderFromMail:                "Email DE",
		SmtpSenderUser:                    "Usuário",
		SmtpSenderPassword:                "Senha",
		SendMailTestFormTo:                "Para",
		SendMailTestFormSubject:           "Assunto",
		SendMailTestFormMessage:           "Mensagem",
		SendMailTestFormSender:            "Método de Envio",
		ErrGmailSenderCredentialsInvalid:  "Estas crendencias não são do tipo DESKTOP APPLICATION (Aplicação de Desktop).",
		SendMailSuccessfully:              "Email enviado com sucesso",
	}
)

Functions

func ConfigureMessages

func ConfigureMessages(b *i18n.Builder)

func DefaultModelOptions

func DefaultModelOptions(opts ...presets.ModelBuilderOption) []presets.ModelBuilderOption

Types

type Attachment

type Attachment struct {
	Name string
	Body io.ReadCloser
}

type Builder

type Builder struct {
	// contains filtered or unexported fields
}

func New

func New(db *gorm.DB, i18nB *i18n.Builder) *Builder

func (*Builder) Install

func (b *Builder) Install(p *presets.Builder) (err error)

type GmailSender

type GmailSender struct {
	User        datatypes.NullJSONType[*goth.User]             `admin:"-"`
	Token       datatypes.NullJSONType[*GmailToken]            `admin:"-"`
	Credentials datatypes.NullJSONType[GmailSenderCredentials] `admin:"-"`
	CallbackURI string                                         `admin:"-"`
}

func (*GmailSender) Config

func (e *GmailSender) Config() (config *oauth2.Config, err error)

func (*GmailSender) IsValid

func (e *GmailSender) IsValid() bool

func (*GmailSender) Send

func (e *GmailSender) Send(b *MessageBuilder) (err error)

func (*GmailSender) String

func (e *GmailSender) String() string

type GmailSenderCredentials

type GmailSenderCredentials struct {
	ClientID  string `json:"client_id,omitempty"`
	ProjectID string `json:"project_id,omitempty"`
	Raw       []byte `json:"-"`
}

func (GmailSenderCredentials) IsZero

func (c GmailSenderCredentials) IsZero() bool

func (GmailSenderCredentials) MarshalJSON

func (c GmailSenderCredentials) MarshalJSON() ([]byte, error)

func (*GmailSenderCredentials) UnmarshalJSON

func (c *GmailSenderCredentials) UnmarshalJSON(data []byte) (err error)

type GmailToken

type GmailToken struct {
	// AccessToken is the token that authorizes and authenticates
	// the requests.
	AccessToken string `json:"access_token"`

	// TokenType is the type of token.
	// The Type method returns either this or "Bearer", the default.
	TokenType string `json:"token_type,omitempty"`

	// RefreshToken is a token that's used by the application
	// (as opposed to the user) to refresh the access token
	// if it expires.
	RefreshToken string `json:"refresh_token,omitempty"`

	// Expiry is the optional expiration time of the access token.
	//
	// If zero, [TokenSource] implementations will reuse the same
	// token forever and RefreshToken or equivalent
	// mechanisms for that TokenSource will not be used.
	Expiry time.Time `json:"expiry,omitempty"`

	// ExpiresIn is the OAuth2 wire format "expires_in" field,
	// which specifies how many seconds later the token expires,
	// relative to an unknown time base approximately around "now".
	// It is the application's responsibility to populate
	// `Expiry` from `ExpiresIn` when required.
	ExpiresIn int64 `json:"expires_in,omitempty"`

	IDToken string `json:"id_token,omitempty"`
}

func (*GmailToken) Token

func (t *GmailToken) Token() (ot *oauth2.Token)

type MailSender

type MailSender struct {
	ID            uint `gorm:"primarykey" admin:"-"`
	SubjectPrefix string
	Sender        string
	Gmail         GmailSender `gorm:"embedded;embeddedPrefix:gmail__"`
	SMTP          SmtpSender  `gorm:"embedded;embeddedPrefix:smtp__"`
}

func (*MailSender) IsValid

func (c *MailSender) IsValid() bool

func (*MailSender) Send

func (c *MailSender) Send(b *MessageBuilder) (err error)

func (*MailSender) SendByMethod

func (c *MailSender) SendByMethod(senderName string, b *MessageBuilder) (err error)

func (MailSender) TableName

func (MailSender) TableName() string

type MessageBuilder

type MessageBuilder struct {
	// contains filtered or unexported fields
}

func Message

func Message() *MessageBuilder

func (*MessageBuilder) AppendSubject

func (b *MessageBuilder) AppendSubject(v string) *MessageBuilder

func (*MessageBuilder) Attachment

func (b *MessageBuilder) Attachment(attachment ...*Attachment) *MessageBuilder

func (*MessageBuilder) Body

func (b *MessageBuilder) Body(body string) *MessageBuilder

func (*MessageBuilder) Build

func (b *MessageBuilder) Build() (m *mail.Msg, err error)

func (*MessageBuilder) FormattedSubject

func (b *MessageBuilder) FormattedSubject() string

func (*MessageBuilder) GetAttachments

func (b *MessageBuilder) GetAttachments() []*Attachment

func (*MessageBuilder) GetBody

func (b *MessageBuilder) GetBody() string

func (*MessageBuilder) GetLabels

func (b *MessageBuilder) GetLabels() []string

func (*MessageBuilder) GetSubject

func (b *MessageBuilder) GetSubject() string

func (*MessageBuilder) GetTo

func (b *MessageBuilder) GetTo() []string

func (*MessageBuilder) Label

func (b *MessageBuilder) Label(label ...string) *MessageBuilder

func (*MessageBuilder) PrependSubject

func (b *MessageBuilder) PrependSubject(v string) *MessageBuilder

func (*MessageBuilder) Subject

func (b *MessageBuilder) Subject(subject string) *MessageBuilder

func (*MessageBuilder) To

func (b *MessageBuilder) To(v ...string) *MessageBuilder

type Messages

type Messages struct {
	MailSender                        string
	TestMessageSubject                string
	TestMessageBody                   string
	MailSenderSender                  string
	MailSenderSubjectPrefix           string
	MailSenderGmail                   string
	MailSenderSMTP                    string
	MailSender_Action_TestSendMail    string
	GmailSenderConfiguredSuccessfully string
	GmailSenderLogOutSuccessfully     string
	GmailSenderCallbackURI            string
	GmailSenderCredentials            string
	GmailSenderCredentialsFile        string
	GmailSenderCredentialsFile_Hint   string
	SmtpSenderTLS                     string
	SmtpSenderServer                  string
	SmtpSenderPort                    string
	SmtpSenderFromMail                string
	SmtpSenderUser                    string
	SmtpSenderPassword                string
	SendMailTestFormTo                string
	SendMailTestFormSubject           string
	SendMailTestFormMessage           string
	SendMailTestFormSender            string
	ErrGmailSenderCredentialsInvalid  i18n.ErrorString
	SendMailSuccessfully              string
}

func GetMessages

func GetMessages(ctx context.Context) *Messages

type Sender

type Sender interface {
	Send(b *MessageBuilder) (err error)
}

type SmtpSender

type SmtpSender struct {
	TLS      bool
	Server   string
	Port     uint16
	FromMail string
	User     string
	Password string
}

func (*SmtpSender) HostPort

func (e *SmtpSender) HostPort() string

func (*SmtpSender) IsValid

func (e *SmtpSender) IsValid() bool

func (*SmtpSender) Send

func (e *SmtpSender) Send(b *MessageBuilder) (err error)

func (*SmtpSender) String

func (e *SmtpSender) String() string

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL