Documentation
¶
Index ¶
- Constants
- Variables
- func DecodeEmail(token string) (string, error)
- func EncodeEmail(email string) (string, error)
- func ForwardAdminEmail(ctx context.Context, received *EmailRecieved) error
- func IsValidReplyTo(to []string) (bool, error)
- func SendEmail(ctx context.Context, options ...EmailOption) error
- func UpdateTemplate(ctx context.Context, alias string, options ...TemplateOption) error
- func VerifyWebhook(req *http.Request, body []byte) (bool, error)
- func WithFrom[T HasFrom](from any) func(T)
- func WithRemoteAttachment[T HasAttachment](attachment *Attachment) func(T)
- func WithReplyTo[T HasReplyTo](replyTo any) func(T)
- func WithSubject[T HasSubject](subject string) func(T)
- func WithTo[T HasTo](to any) func(T)
- type Address
- type Attachment
- type BatchSendResponse
- type Config
- type Email
- type EmailOption
- type EmailRecieved
- type HasAttachment
- type HasFrom
- type HasReplyTo
- type HasSubject
- type HasTo
- type ReceivedEmail
- func (e *ReceivedEmail) ExtractAttachments(ctx context.Context) ([]*resend.Attachment, error)
- func (e *ReceivedEmail) Forward(ctx context.Context, to ...string) error
- func (e *ReceivedEmail) GetBody() string
- func (e *ReceivedEmail) GetFrom() *mail.Address
- func (e *ReceivedEmail) GetID() string
- func (e *ReceivedEmail) GetSubject() string
- func (e *ReceivedEmail) Timestamp() time.Time
- func (e *ReceivedEmail) Valid() error
- type SendResponse
- type Template
- type TemplateOption
- type WebhookEmailReceieved
Constants ¶
const ( // ConfigEnvPrefix is the prefix applied to environment variables for configuring Resend. ConfigEnvPrefix = "RESEND_" // TagUserID is a tag containing a user ID. TagUserID string = "user_id" // TagCategory is a tag containing a category. TagCategory string = "category" // TagCategoryPromotional is the promotional category. TagCategoryPromotional string = "promotional" // TagCategoryAccount is the account category. TagCategoryAccount string = "account" // TagCategorySupport is the support category. TagCategorySupport string = "support" )
Variables ¶
var ErrInvalidEmail = errors.New("email is invalid")
var LoadClient = sync.OnceValues(func() (*resend.Client, error) { if err := loadConfig(); err != nil { return nil, fmt.Errorf("load config: %w", err) } client := resend.NewClient(cfg.APIKey) return client, nil })
LoadClient loads the resend API client and ensures this is only done one time, no matter how many times it is called.
Functions ¶
func DecodeEmail ¶ added in v0.87.0
DecodeEmail decrypts and returns the plain-text email encrypted by EncodeEmail.
func EncodeEmail ¶ added in v0.87.0
EncodeEmail encrypts an email using AES-GCM with a key derived from the passphrase + salt. The result is URL-safe base64 (no padding).
func ForwardAdminEmail ¶ added in v0.143.0
func ForwardAdminEmail(ctx context.Context, received *EmailRecieved) error
func IsValidReplyTo ¶ added in v0.143.0
func SendEmail ¶ added in v0.87.0
func SendEmail(ctx context.Context, options ...EmailOption) error
SendEmail sends the given email.
func UpdateTemplate ¶ added in v0.86.0
func UpdateTemplate(ctx context.Context, alias string, options ...TemplateOption) error
UpdateTemplate will update the template with the given alias. If a template with the alias does not exist, it will be created.
func VerifyWebhook ¶ added in v0.143.0
func WithRemoteAttachment ¶ added in v0.126.0
func WithRemoteAttachment[T HasAttachment](attachment *Attachment) func(T)
WithRemoteAttachment option defines a remote file attachment to add to the email.
func WithReplyTo ¶ added in v0.122.0
func WithReplyTo[T HasReplyTo](replyTo any) func(T)
WithReplyTo option sets the reply-to field for the email.
func WithSubject ¶ added in v0.122.0
func WithSubject[T HasSubject](subject string) func(T)
WithSubject option sets the subject field for the email.
Types ¶
type Attachment ¶ added in v0.25.0
type Attachment struct {
*resend.Attachment
}
func NewRemoteFileAttachment ¶ added in v0.126.0
func NewRemoteFileAttachment(path, name string) *Attachment
type BatchSendResponse ¶ added in v0.87.0
type BatchSendResponse []SendResponse
BatchSendResponse contains data related to a batch email request.
func BatchSendEmails ¶ added in v0.87.0
func BatchSendEmails(ctx context.Context, emails ...*Email) (BatchSendResponse, error)
BatchSendEmails sends the given emails in a batch request.
type Config ¶
type Config struct {
WebHookSecret string `koanf:"webhooksecret" validate:"required"`
APIKey string `koanf:"apikey" validate:"required"`
AdminEmail string `koanf:"adminemail" validate:"required,email"`
ReplyToEmail string `koanf:"replyto" validate:"required,email"`
Key string `koanf:"key" validate:"required"`
Salt string `koanf:"salt" validate:"required"`
}
Config structure.
type Email ¶ added in v0.87.0
Email is an email to be processed with the resend API.
func NewTemplatedEmail ¶ added in v0.87.0
func NewTemplatedEmail(templateID string, options ...EmailOption) (*Email, error)
NewTemplatedEmail creates a new email using the given template and with any options specified.
func (*Email) SetRemoteAttachment ¶ added in v0.126.0
func (e *Email) SetRemoteAttachment(attachment *Attachment)
func (*Email) SetReplyTo ¶ added in v0.126.0
func (*Email) SetSubject ¶ added in v0.126.0
type EmailOption ¶ added in v0.61.0
type EmailOption func(*Email)
EmailOption is a functional option to apply to an email.
func WithExistingEmail ¶ added in v0.91.1
func WithExistingEmail(data *Email) EmailOption
func WithHTMLContent ¶ added in v0.91.1
func WithHTMLContent(html string) EmailOption
WithHTMLContent option sets the html content of the email. When using this option, it is advised to also use the WithTextContent option to set the text content of the email shown to clients that don't support html emails.
func WithTag ¶ added in v0.61.0
func WithTag(key string, value string) EmailOption
WithTag option applies the given tag to the email.
func WithTextContent ¶ added in v0.91.1
func WithTextContent(text string) EmailOption
WithTextContent option sets the text content of the email (shown in clients that don't support HTML emails).
func WithVariable ¶ added in v0.86.0
func WithVariable(key string, value any) EmailOption
WithVariable option assigns a value to the given template variable in the email template.
type EmailRecieved ¶ added in v0.25.0
type EmailRecieved struct {
EmailId string `json:"email_id,omitempty"`
CreatedAt string `json:"created_at,omitempty"`
From string `json:"from,omitempty"`
To []string `json:"to,omitempty"`
Bcc []string `json:"bcc,omitempty"`
Cc []string `json:"cc,omitempty"`
MessageId string `json:"message_id,omitempty"`
Subject string `json:"subject,omitempty"`
Attachments []Attachment `json:"attachments,omitempty"`
}
type HasAttachment ¶ added in v0.126.0
type HasAttachment interface {
*Email
SetRemoteAttachment(attachment *Attachment)
}
type HasFrom ¶ added in v0.122.0
type HasFrom interface {
*Template | *ReceivedEmail | *Email
SetFrom(replyTo any)
}
type HasReplyTo ¶ added in v0.122.0
type HasReplyTo interface {
*Template | *ReceivedEmail | *Email
SetReplyTo(replyTo any)
}
type HasSubject ¶ added in v0.122.0
type HasSubject interface {
*Template | *ReceivedEmail | *Email
SetSubject(subject string)
}
type ReceivedEmail ¶ added in v0.25.0
type ReceivedEmail struct {
*resend.ReceivedEmail
}
func GetFullEmail ¶ added in v0.143.0
func GetFullEmail(ctx context.Context, id string) (*ReceivedEmail, error)
func (*ReceivedEmail) ExtractAttachments ¶ added in v0.61.0
func (e *ReceivedEmail) ExtractAttachments(ctx context.Context) ([]*resend.Attachment, error)
ExtractAttachments will extract and return the attachments on the email, if any.
func (*ReceivedEmail) Forward ¶ added in v0.61.0
func (e *ReceivedEmail) Forward(ctx context.Context, to ...string) error
Forward will forward the recieved email to the given addresses.
func (*ReceivedEmail) GetBody ¶ added in v0.25.0
func (e *ReceivedEmail) GetBody() string
func (*ReceivedEmail) GetFrom ¶ added in v0.25.0
func (e *ReceivedEmail) GetFrom() *mail.Address
func (*ReceivedEmail) GetID ¶ added in v0.25.0
func (e *ReceivedEmail) GetID() string
func (*ReceivedEmail) GetSubject ¶ added in v0.25.0
func (e *ReceivedEmail) GetSubject() string
func (*ReceivedEmail) Timestamp ¶ added in v0.25.0
func (e *ReceivedEmail) Timestamp() time.Time
func (*ReceivedEmail) Valid ¶ added in v0.25.0
func (e *ReceivedEmail) Valid() error
Valid returns a non-nil error when the ReceivedEmail contains invalid fields.
type SendResponse ¶ added in v0.87.0
SendResponse contains details about an individual email sent status.
type Template ¶ added in v0.122.0
type Template struct {
*resend.UpdateTemplateRequest
// contains filtered or unexported fields
}
func (*Template) SetReplyTo ¶ added in v0.122.0
func (*Template) SetSubject ¶ added in v0.122.0
type TemplateOption ¶ added in v0.86.0
type TemplateOption func(*Template)
TemplateOption is a functional option applied to a template.
func WithTemplateHTML ¶ added in v0.86.0
func WithTemplateHTML(data []byte) TemplateOption
WithTemplateHTML option sets the HTML format of the template.
func WithTemplateName ¶ added in v0.86.0
func WithTemplateName(name string) TemplateOption
WithTemplateName option sets the name of the template.
func WithTemplateText ¶ added in v0.86.0
func WithTemplateText(data []byte) TemplateOption
WithTemplateText option sets the text format of the template.
func WithTemplateVariable ¶ added in v0.48.0
func WithTemplateVariable(key, dataType string, fallback any) TemplateOption
WithTemplateVariable option sets a variable for use within the template.
type WebhookEmailReceieved ¶ added in v0.25.0
type WebhookEmailReceieved struct {
Type string `json:"type,omitempty"`
CreatedAt string `json:"created_at,omitempty"`
Data EmailRecieved `json:"data,omitempty"`
}