How to integrate zeptomail in Golang
Tags: email, beginners, backenddevelopment, zeptomail
Published: 2024-03-19 13:20:44

Transaction emailing have become a very vital part of any application. Wondering what transactional email means?
Transactional emails are messages that are sent in response to an action a user takes on a website or application. Examples include: Password reset emails etc. 
There are several transactional email service providers out there just to name a few:
- Postmark
- ZeptoMail
- SendGrid

In this article, I will be talking about ZeptoMail. As we already know, ZeptoMail is a transactional emailing service. It is tailor-made for sending transactional emails, ensuring fast delivery and inbox placement for your application emails.

So, while working on a project for a company I worked at. We decided to use ZeptoMail to send transactional emails. After my search, I realized that ZeptoMail does not have a Golang library. And as you already know by now, I opted in to build one. My reasons for always building Golang libraries is so as to make the work of other Golang developers easier and for re-usability as well.
Now lets get to the fun part :). Here's how to setup ZeptoMail in your Golang project.
### Get started
In order to use this package, you need to first head over to [https://zoho.com](https://zoho.com) to create an account to get your Authorization Token Key.

### Installation
This package can in installed using the go command below.
```sh
go get github.com/iqquee/zeptomail@latest
```
### Quick start
```sh
# assume the following codes in example.go file
$ touch example.go
# open the just created example.go file in the text editor of your choice
```

#### SendHTMLEmail
`SendHTMLEmail()` sends a HTML template email.

This method takes in the `zeptomail.SendHTMLEmailReq{}` struct as a parameter.

```go
package main

import (
	"fmt"
	"net/http"

	"github.com/iqquee/zeptomail"
)

func main() {
	zeptomailToken := "your zeptomail authorization token"

	client := zeptomail.New(*http.DefaultClient, zeptomailToken)
    sendTo := []zeptomail.SendEmailTo{}
	sendTo = append(sendTo, zeptomail.SendEmailTo{
		EmailAddress: zeptomail.EmailAddress{
			Address: "rudra.d@zylker.com",
			Name:    "Rudra",
		},
	})

	data := "<div><b> Kindly click on Verify Account to confirm your account </b></div>"

	req := zeptomail.SendHTMLEmailReq{
		To: sendTo,
		From: zeptomail.EmailAddress{
			Address: "accounts@info.zylker.com",
			Name:    "Paula",
		},
		Subject:  "Account Confirmation",
		Htmlbody: data,
	}
	res, err := client.SendHTMLEmail(req)
	if err != nil {
		fmt.Printf("This is the error: %v", err.Error())
	}

	for _, e := range res.Data {
		fmt.Printf("response message: %v\n", e.Message)
	}
}
```


#### SendTemplatedEmail
`SendTemplatedEmail()` sends a templated email set from your ZeptoMail dashboard.

This method takes in the `zeptomail.SendTemplatedEmailReq{}` struct as a parameter.

```go
package main

import (
	"fmt"
	"net/http"

	"github.com/iqquee/zeptomail"
)

func main() {
	zeptomailToken := "your zeptomail authorization token"
	tempKey := "your zeptomail template key"

	client := zeptomail.New(*http.DefaultClient, zeptomailToken)
    sendTo := []zeptomail.SendEmailTo{}
	sendTo = append(sendTo, zeptomail.SendEmailTo{
		EmailAddress: zeptomail.EmailAddress{
			Address: "rudra.d@zylker.com",
			Name:    "Rudra",
		},
	})

	req := zeptomail.SendTemplatedEmailReq{
		To: sendTo,
		From: zeptomail.EmailAddress{
			Address: "accounts@info.zylker.com",
			Name:    "Paula",
		},
		TemplateKey: tempKey,
	}

	res, err := client.SendTemplatedEmail(req)
	if err != nil {
		fmt.Printf("This is the error: %v", err.Error())
	}

	for _, e := range res.Data {
		fmt.Printf("response message: %v\n", e.Message)
	}
}
```

For a detailed documentation, you can check out [https://github.com/iqquee/zeptomail](https://github.com/iqquee/zeptomail). For more sample codes, you can see [https://github.com/iqquee/zeptomail/blob/main/examples/main.go](https://github.com/iqquee/zeptomail/blob/main/examples/main.go). Please do not hesitate to create an [issue](https://github.com/iqquee/zeptomail/issues) on GitHub if you encounter any issue while using this library as it will be attended to and resolved as soon as possible.