emails

package
v1.9.0 Latest Latest
Warning

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

Go to latest
Published: Nov 19, 2024 License: MIT Imports: 34 Imported by: 0

Documentation

Index

Constants

View Source
const (
	UnknownDate             = "unknown date"
	DateFormat              = "Monday, January 2, 2006"
	UnspecifiedOrganization = "Unknown Legal Name"
)
View Source
const (
	VerifyContactRE               = "TRISA: Please verify your email address"
	ReviewRequestRE               = "New TRISA Global Directory Registration Request"
	RejectRegistrationRE          = "TRISA Global Directory Registration Update"
	DeliverCertsRE                = "Welcome to the TRISA network!"
	ExpiresAdminNotificationRE    = "A TRISA Identity Certificate is Expiring Soon"
	ReissuanceReminderRE          = "TRISA Identity Certificate Expiration"
	ReissuanceStartedRE           = "TRISA PKCS12 Password for Certificate Reissuance"
	ReissuanceAdminNotificationRE = "A TRISA Identity Certificate Reissuance has been Completed"
)

Subjects for creating emails on demand.

View Source
const AssetDebug = false

AssetDebug is true if the assets were built with the debug flag enabled.

Variables

This section is empty.

Functions

func Asset

func Asset(name string) ([]byte, error)

Asset loads and returns the asset for the given name. It returns an error if the asset could not be found or could not be loaded.

func AssetDigest

func AssetDigest(name string) ([sha256.Size]byte, error)

AssetDigest returns the digest of the file with the given name. It returns an error if the asset could not be found or the digest could not be loaded.

func AssetDir

func AssetDir(name string) ([]string, error)

AssetDir returns the file names below a certain directory embedded in the file by go-bindata. For example if you run go-bindata on data/... and data contains the following hierarchy:

data/
  foo.txt
  img/
    a.png
    b.png

then AssetDir("data") would return []string{"foo.txt", "img"}, AssetDir("data/img") would return []string{"a.png", "b.png"}, AssetDir("foo.txt") and AssetDir("notexist") would return an error, and AssetDir("") will return []string{"data"}.

func AssetInfo

func AssetInfo(name string) (os.FileInfo, error)

AssetInfo loads and returns the asset info for the given name. It returns an error if the asset could not be found or could not be loaded.

func AssetNames

func AssetNames() []string

AssetNames returns the names of the assets.

func AssetString

func AssetString(name string) (string, error)

AssetString returns the asset contents as a string (instead of a []byte).

func AttachJSON

func AttachJSON(message *mail.SGMailV3, data []byte, filename string) (err error)

AttachJSON by marshaling the specified data into human-readable data and encode and attach it to the email as a file.

func CheckEmails added in v1.5.1

func CheckEmails(t *testing.T, messages []*EmailMeta)

CheckEmails verifies that the provided email messages exist in both the email mock and the audit log on the contact, if the email was sent to a contact. This method is meant to be run from a test context. TODO: refactor to expect multiple emails per contact/recipient

func DeliverCertsEmail

func DeliverCertsEmail(sender, senderEmail, recipient, recipientEmail, attachmentPath string, data DeliverCertsData) (message *mail.SGMailV3, err error)

DeliverCertsEmail creates a new deliver certs email, ready for sending by rendering the text and html templates with the supplied data, loading the attachment from disk then constructing a sendgrid email.

func Digests

func Digests() (map[string][sha256.Size]byte, error)

Digests returns a map of all known files and their checksums.

func ExpiresAdminNotificationEmail added in v1.5.0

func ExpiresAdminNotificationEmail(sender, senderEmail, recipient, recipientEmail string, data ExpiresAdminNotificationData) (message *mail.SGMailV3, err error)

ExpiresAdminNotificationEmail creates a new certs expired admin notification email, ready for sending by rendering the text and html templates with the supplied data.

func LoadAttachment

func LoadAttachment(message *mail.SGMailV3, attachmentPath string) (err error)

LoadAttachment onto email from a file on disk.

func MustAsset

func MustAsset(name string) []byte

MustAsset is like Asset but panics when Asset would return an error. It simplifies safe initialization of global variables.

func MustAssetString

func MustAssetString(name string) string

MustAssetString is like AssetString but panics when Asset would return an error. It simplifies safe initialization of global variables.

func ReissuanceAdminNotificationEmail added in v1.5.1

func ReissuanceAdminNotificationEmail(sender, senderEmail, recipient, recipientEmail string, data ReissuanceAdminNotificationData) (message *mail.SGMailV3, err error)

ReissuanceAdminNotificationEmail creates a new certs reissuance admin notification email, ready for sending by rendering the text and html templates with the supplied data.

func ReissuanceReminderEmail added in v1.5.0

func ReissuanceReminderEmail(sender, senderEmail, recipient, recipientEmail string, data ReissuanceReminderData) (message *mail.SGMailV3, err error)

ReissuanceReminderEmail creates a new reissuance reminder email, ready for sending by rendering the text and html templates with the supplied data.

func ReissuanceStartedEmail added in v1.5.0

func ReissuanceStartedEmail(sender, senderEmail, recipient, recipientEmail string, data ReissuanceStartedData) (message *mail.SGMailV3, err error)

ReissuanceStartedEmail creates a new reissuance started email, ready for sending by rendering the text and html templates with the supplied data.

func RejectRegistrationEmail

func RejectRegistrationEmail(sender, senderEmail, recipient, recipientEmail string, data RejectRegistrationData) (message *mail.SGMailV3, err error)

RejectRegistrationEmail creates a new reject registration email, ready for sending by rendering the text and html templates with the supplied data then constructing a sendgrid email.

func Render

func Render(name string, data interface{}) (text, html string, err error)

Render returns the text and html executed templates for the specified name and data. Ensure that the extension is not supplied to the render method.

func RestoreAsset

func RestoreAsset(dir, name string) error

RestoreAsset restores an asset under the given directory.

func RestoreAssets

func RestoreAssets(dir, name string) error

RestoreAssets restores an asset under the given directory recursively.

func ReviewRequestEmail

func ReviewRequestEmail(sender, senderEmail, recipient, recipientEmail string, data ReviewRequestData) (message *mail.SGMailV3, err error)

ReviewRequestEmail creates a new review request email, ready for sending by rendering the text and html templates with the supplied data then constructing a sendgrid email.

func VerifyContactEmail

func VerifyContactEmail(sender, senderEmail, recipient, recipientEmail string, data VerifyContactData) (message *mail.SGMailV3, err error)

VerifyContactEmail creates a new verify contact email, ready for sending by rendering the text and html templates with the supplied data then constructing a sendgrid email.

Types

type AdminReview added in v1.5.0

type AdminReview interface {
	AdminReviewURL() string
}

type DeliverCertsData

type DeliverCertsData struct {
	Name                string // Used to address the email
	VID                 string // The ID of the VASP/Registration
	Organization        string // The name of the organization (if it exists)
	CommonName          string // The common name assigned to the cert
	SerialNumber        string // The serial number of the certificate
	Endpoint            string // The expected endpoint for the TRISA service
	RegisteredDirectory string // The directory name for the certificates being issued
}

DeliverCertsData to complete deliver certs email templates.

type EmailManager

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

EmailManager allows the server to send rich emails using the SendGrid service.

func New

func New(conf config.EmailConfig) (m *EmailManager, err error)

New email manager with the specified configuration.

func (*EmailManager) Send

func (m *EmailManager) Send(message *sgmail.SGMailV3) (err error)

func (*EmailManager) SendContactReissuanceReminder added in v1.5.1

func (m *EmailManager) SendContactReissuanceReminder(vasp *pb.VASP, timeWindow int, reissuanceDate time.Time) (err error)

Helper function for HandleCertificateReissuance that sends reissuance reminder emails a vasp's contacts, ensuring at least one of the contact's receives the reminder or a critical alert is raised.

func (*EmailManager) SendDeliverCertificates

func (m *EmailManager) SendDeliverCertificates(vasp *pb.VASP, path string) (sent int, err error)

SendDeliverCertificates sends the PKCS12 encrypted certificate files to the VASP contacts as an attachment, completing the certificate issuance process. This method only sends the certificate attachment to one email (to limit the delivery of a secure email), ranking the contact emails by priority. Caller must update the VASP record on the data store after calling this function.

func (*EmailManager) SendExpiresAdminNotification added in v1.5.0

func (m *EmailManager) SendExpiresAdminNotification(vasp *pb.VASP, timeWindow int, reissueDate time.Time) (sent int, err error)

SendExpiresAdminNotification sends the admins a notice that an identity certificate will be expiring soon. This allows the admins to determine if a new review of the TRISA member is necessary before the reissuance process begins.

func (*EmailManager) SendReissuanceAdminNotification added in v1.5.1

func (m *EmailManager) SendReissuanceAdminNotification(vasp *pb.VASP, timeWindow int, reissueDate time.Time) (sent int, err error)

SendReissuanceAdminNotification sends the admins a notice that an identity certificate has been reissued. This allows the admins to know that the reissuance has been done automatically

func (*EmailManager) SendReissuanceReminder added in v1.5.0

func (m *EmailManager) SendReissuanceReminder(vasp *pb.VASP, reissueDate time.Time) (sent int, err error)

SendReissuanceReminder sends a reminder to all verified contacts that their identity certificates will be expiring soon and that the system will automatically reissue the certs on a particular date.

func (*EmailManager) SendReissuanceStarted added in v1.5.0

func (m *EmailManager) SendReissuanceStarted(vasp *pb.VASP, whisperLink string) (sent int, err error)

SendReissuanceStarted sends the PKCS12 password via a secure one time link. This method only sends the PKCS12 password to one email (to limit the delivery of secure emails), ranking the contact emails by priority.

func (*EmailManager) SendRejectRegistration

func (m *EmailManager) SendRejectRegistration(vasp *pb.VASP, reason string) (sent int, err error)

SendRejectRegistration sends a notification to all VASP contacts that their registration status is rejected without certificate issuance and explains why. Caller must update the VASP record on the data store after calling this function.

func (*EmailManager) SendReviewRequest

func (m *EmailManager) SendReviewRequest(vasp *pb.VASP) (sent int, err error)

SendReviewRequest is a shortcut for iComply verification in which we simply send an email to the TRISA admins and have them manually verify registrations.

func (*EmailManager) SendVerifyContact added in v1.3.1

func (m *EmailManager) SendVerifyContact(vasp *pb.VASP, contact *models.Contact) (err error)

SendVerifyContact sends a verification email to a contact.

func (*EmailManager) SendVerifyContacts

func (m *EmailManager) SendVerifyContacts(vasp *pb.VASP, contacts map[string]*models.Contact) (sent int, err error)

SendVerifyContacts creates a verification token for each contact in the VASP contact list and sends them the verification email with instructions on how to verify their email address. Caller must update the VASP record on the data store after calling this function.

type EmailMeta added in v1.5.1

type EmailMeta struct {
	Contact   *pb.Contact
	To        string
	From      string
	Subject   string
	Reason    string
	Timestamp time.Time
}

type ExpiresAdminNotificationData added in v1.5.0

type ExpiresAdminNotificationData struct {
	VID                 string    // The ID of the VASP/Registration
	Organization        string    // The name of the organization (if it exists)
	CommonName          string    // The common name assigned to the cert
	SerialNumber        string    // The serial number of the certificate
	Endpoint            string    // The expected endpoint for the TRISA service
	RegisteredDirectory string    // The directory name for the certificates being issued
	Expiration          time.Time // The timestamp that the certificates expire
	Reissuance          time.Time // The timestamp the certificates will be reissued
	BaseURL             string    // The URL of the admin review endpoint to build the AdminReviewURL
}

ExpiresAdminNotificationData to complete expires admin notification email templates.

func (ExpiresAdminNotificationData) AdminReviewURL added in v1.5.0

func (d ExpiresAdminNotificationData) AdminReviewURL() string

AdminReviewURL composes a link to the VASP detail in the admin UI. If the base url is missing or can't be parsed, it logs an warning and returns empty string. The AdminReviewURL is useful, but it is not a critical error.

func (ExpiresAdminNotificationData) ExpirationDate added in v1.5.0

func (d ExpiresAdminNotificationData) ExpirationDate() string

ExpirationDate formats the expiration date for rendering in the email.

func (ExpiresAdminNotificationData) ReissueDate added in v1.5.0

func (d ExpiresAdminNotificationData) ReissueDate() string

ReissueDate formats the reissuance date for rendering in the email.

type FutureReissuer added in v1.5.0

type FutureReissuer interface {
	ExpirationDate() string
	ReissueDate() string
}

type ReissuanceAdminNotificationData added in v1.5.1

type ReissuanceAdminNotificationData struct {
	VID                 string    // The ID of the VASP/Registration
	Organization        string    // The name of the organization (if it exists)
	CommonName          string    // The common name assigned to the cert
	SerialNumber        string    // The serial number of the certificate
	Endpoint            string    // The expected endpoint for the TRISA service
	RegisteredDirectory string    // The directory name for the certificate that was issued
	Expiration          time.Time // The timestamp when the certificate expires
	Reissuance          time.Time // The timestamp when the certificate was reissued
	BaseURL             string    // The URL of the admin review endpoint to build the AdminReviewURL
}

ReissuanceAdminNotificationData to complete reissuance admin notification email templates.

func (ReissuanceAdminNotificationData) AdminReviewURL added in v1.5.1

func (d ReissuanceAdminNotificationData) AdminReviewURL() string

AdminReviewURL composes a link to the VASP detail in the admin UI. If the base url is missing or can't be parsed, it logs an warning and returns empty string. The AdminReviewURL is useful, but it is not a critical error.

func (ReissuanceAdminNotificationData) ExpirationDate added in v1.5.1

func (d ReissuanceAdminNotificationData) ExpirationDate() string

ExpirationDate formats the expiration date for rendering in the email.

func (ReissuanceAdminNotificationData) ReissueDate added in v1.5.1

func (d ReissuanceAdminNotificationData) ReissueDate() string

ReissueDate formats the reissuance date for rendering in the email.

type ReissuanceReminderData added in v1.5.0

type ReissuanceReminderData struct {
	Name                string    // Used to address the email
	VID                 string    // The ID of the VASP/Registration
	Organization        string    // The name of the organization (if it exists)
	CommonName          string    // The common name assigned to the cert
	SerialNumber        string    // The serial number of the certificate
	Endpoint            string    // The expected endpoint for the TRISA service
	RegisteredDirectory string    // The directory name for the certificates being issued
	Expiration          time.Time // The timestamp that the certificates expire
	Reissuance          time.Time // The timestamp the certificates will be reissued
}

ReissuanceReminderData to complete reissue reminder email templates.

func (ReissuanceReminderData) ExpirationDate added in v1.5.0

func (d ReissuanceReminderData) ExpirationDate() string

ExpirationDate formats the expiration date for rendering in the email.

func (ReissuanceReminderData) ReissueDate added in v1.5.0

func (d ReissuanceReminderData) ReissueDate() string

ReissueDate formats the reissuance date for rendering in the email.

type ReissuanceStartedData added in v1.5.0

type ReissuanceStartedData struct {
	Name                string // Used to address the email
	VID                 string // The ID of the VASP/Registration
	Organization        string // The name of the organization (if it exists)
	CommonName          string // The common name assigned to the cert
	Endpoint            string // The expected endpoint for the TRISA service
	RegisteredDirectory string // The directory name for the certificates being issued
	WhisperURL          string // Secure one-time whisper link for password retrieval
}

ReissuanceStartedData to complete reissue reminder email templates.

type RejectRegistrationData

type RejectRegistrationData struct {
	Name                string // Used to address the email
	VID                 string // The ID of the VASP/Registration
	Organization        string // The name of the organization (if it exists)
	CommonName          string // The common name assigned to the cert
	RegisteredDirectory string // The directory name for the certificates being issued
	Reason              string // A description of why the registration request was rejected
}

RejectRegistrationData to complete reject registration email templates.

type ReviewRequestData

type ReviewRequestData struct {
	VID                 string // The ID of the VASP/Registration
	Token               string // The unique token needed to review the registration
	Request             string // The review request data as a nicely formatted JSON or YAML string
	RegisteredDirectory string // The directory name for the review request
	Attachment          []byte // Data to attach to the email
	BaseURL             string // The URL of the admin review endpoint to build the AdminReviewURL
}

ReviewRequestData to complete review request email templates.

func (ReviewRequestData) AdminReviewURL

func (d ReviewRequestData) AdminReviewURL() string

AdminReviewURL composes a link to the VASP detail in the admin UI. If the base url is missing or can't be parsed, it logs an warning and returns empty string. The AdminReviewURL is useful, but it is not a critical error.

type VerifyContactData

type VerifyContactData struct {
	Name        string // Used to address the email
	Token       string // The unique token needed to verify the email
	VID         string // The ID of the VASP/Registration
	BaseURL     string // The URL of the verify contact endpoint to build the VerifyContactURL
	DirectoryID string // The registered directory to build a URL accessible by the BFF
}

VerifyContactData to complete the verify contact email templates.

func (VerifyContactData) VerifyContactURL

func (d VerifyContactData) VerifyContactURL() *url.URL

VerifyContactURL composes the link to verify the contact from the context. If the link is not able to be composed, the function returns an empty string and logs an error because without the link the email is fairly useless.

func (VerifyContactData) VerifyContactURLUnencoded added in v1.7.8

func (d VerifyContactData) VerifyContactURLUnencoded() template.HTML

Jump to

Keyboard shortcuts

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