š Amazon Simple Email Service Template (Amazon SES) is a highly scalable and cost-effective bulk and transactional email-sending service for businesses and developers. Subscription is quick and is on pay-as-you-go basis. You can read more about Amazon SES here š.
Create an AwsSES.go file (Code Explained below)
package main
import (
"fmt"
"utilities"
"github.com/spf13/cast"
"github.com/aws/aws-sdk-go/aws"
"github.com/aws/aws-sdk-go/aws/session"
"github.com/aws/aws-sdk-go/service/ses"
)
const (
sesRegion = "us-east-1"
)
/*
Create SES Session Function
*/
func newSESSession() (*session.Session, error) {
return session.NewSession(&aws.Config{
Region: aws.String(sesRegion),
})
}
Create a Template Struct Format
package main import ( "fmt" "utilities" "github.com/spf13/cast" "github.com/aws/aws-sdk-go/aws" "github.com/aws/aws-sdk-go/aws/session" "github.com/aws/aws-sdk-go/service/ses" ) const ( sesRegion = "us-east-1" ) /* Create SES Session Function */ func newSESSession() (*session.Session, error) { return session.NewSession(&aws.Config{ Region: aws.String(sesRegion), }) }
Create a Template Struct Format
// SESTemplate ... contains template name, subject, htmlpart & text part type SESTemplate struct { TemplateName string `json:"templateName"` Subject string `json:"subject"` HTMLBody string `json:"htmlBody"` TextBody string `json:"textBody"` }
func formatSESTemplate(template SESTemplate) *ses.Template {
return &ses.Template{
TemplateName: aws.String(template.TemplateName),
SubjectPart: aws.String(template.Subject),
HtmlPart: aws.String(template.HTMLBody),
TextPart: aws.String(template.TextBody),
}
}
Create an Email Template
To create a template to send personalized email messages, use the CreateTemplate operation. The template can be used by any account authorized to send messages in the AWS Region to which the template is added.
// CreateSESTemplate ... add new template to AWS SES panel func CreateSESTemplate(template SESTemplate) error { sess, err := newSESSession() if err != nil { fmt.Println("Error ses session creation: ", err) return err } sesClient := ses.New(sess) createTemplateInput := &ses.CreateTemplateInput{ Template: formatSESTemplate(template), } _, err = sesClient.CreateTemplate(createTemplateInput) if err != nil { fmt.Println("Error create new ses template: ", err) return err } return nil }
Get an Email Template
To view the content for an existing email template including the subject line, HTML body, and plain text, use the GetTemplate operation. Only TemplateName is required.// GetSESTemplateByName ... get template by using template name
func GetSESTemplateByName(templateName string) (map[string]string, error) {
sess, err := newSESSession()
if err != nil {
fmt.Println("Error ses session creation: ", err)
return nil, err
}
sesClient := ses.New(sess)
templateOutput, err := sesClient.GetTemplate(&ses.GetTemplateInput{TemplateName: aws.String(templateName)})
if err != nil {
fmt.Println("Error get ses template: ", err)
return nil, err
}
template = map[string]string{
"templateName": cast.ToString(templateOutput.Template.TemplateName),
"subject": cast.ToString(templateOutput.Template.SubjectPart),
"htmlBody": cast.ToString(templateOutput.Template.HtmlPart),
"textBody": cast.ToString(templateOutput.Template.TextPart),
}
return template, nil
}
List All Email Templates
To retrieve a list of all email templates that are associated with your AWS account in the current AWS Region, use the ListTemplates operation.// GetAllSESTemplate ... get all ses templates Current Page
func GetAllSESTemplate(page string) (interface{}, error) {
sess, err := newSESSession()
if err != nil {
fmt.Println("Error ses session creation: : ", err)
return nil, err
}
sesClient := ses.New(sess)
/*
Pagination Limit Set 10
*/
var itemsFrom int64
itemsFrom = (cast.ToInt64(page) * 10) - 9
listTemplatesInput := ses.ListTemplatesInput{
MaxItems: &itemsFrom,
}
listTemplatesOutput, err := sesClient.ListTemplates(&listTemplatesInput)
if err != nil {
fmt.Println("Error list ses templates: ", err)
return nil, err
}
return listTemplatesOutput.TemplatesMetadata, nil
}
Update an Email Template
To change the content for a specific email template including the subject line, HTML body, and plain text, use the UpdateTemplate operation.// UpdateSESTemplate ... update an existing template to AWS SES panel
func UpdateSESTemplate(template SESTemplate) error {
sess, err := newSESSession()
if err != nil {
fmt.Println("Error ses session creation: ", err)
return err
}
sesClient := ses.New(sess)
updateTemplateInput := &ses.UpdateTemplateInput{
Template: formatSESTemplate(template),
}
_, err = sesClient.UpdateTemplate(updateTemplateInput)
if err != nil {
fmt.Println("Error update an existing template: ", err)
return err
}
return nil
}
Delete an Email Template
To remove a specific email template, use the DeleteTemplate operation. All you need is the TemplateName.// DeleteSESTemplateByName ... delete template by using template name
func DeleteSESTemplateByName(templateName string) error {
sess, err := newSESSession()
if err != nil {
fmt.Println("Error ses session creation: ", err)
return err
}
sesClient := ses.New(sess)
_, err = sesClient.DeleteTemplate(&ses.DeleteTemplateInput{TemplateName: aws.String(templateName)})
if err != nil {
fmt.Println("Error delete an existing template: ", err)
return err
}
return nil
}
(Note that by default anything written to Console will be logged as CloudWatch Logs events.)
Awesome post. You Post is very informative. Thanks for Sharing.
ReplyDeleteAWS Training in Noida
Thanks for sharing,hope it will be helpful for too many people that are searching for this topic
ReplyDeleteAWS Training
AWS Online Training
Amazon Web Services Online Training
This idea is mind blowing. I think everyone should know such information like you have described on this post. Thank you for sharing this explanation. Thank you for your post. This is excellent information. It is amazing and wonderful to visit your site..
ReplyDeleteoracle training in chennai
oracle training institute in chennai
oracle training in bangalore
oracle training in hyderabad
oracle training
oracle online training
hadoop training in chennai
hadoop training in bangalore
Hey, you did a great job describing the whole process of creating those templates, but I think it is worth to mention that today you have tools like https://sovy.app which actually makes it a lot easier to deal with Amazon SES email templates ;)
ReplyDelete