Golang: Email Html Template Dengan Gomail

Subscribe Dengan Account Google Untuk Membaca Artikel Tanpa Iklan
Golang: Email Html Template Dengan Gomail

Hal yang menarik dari bahasa go adalah kecepatan pemrosesan data, dalam banyak kasus transaksi keuangan kecepatan dan ketepatan penyajian data menjadi tolak ukur keberhasilan sebuah sistem. Go adalah salah satu bahasa pemrograman pilihan untuk backend processing.

Berbicara tentang pengiriman data via email ini menjadi hal unik tersendiri, setiap bahasa pemrograman telah memberikan dukungan dalam bentuk library email. Demikian juga dengan bahasa go, salah satu modul email yang banyak dipakai oleh para engineer bahasa go yaitu GOMAIL.

Gomail mendukung protokol smpt dan pop3, bahkan dengan gomail kamu bisa menggunakan protokol smpt Google Mail. Cara installnya cukup mudah dan kamu bisa memanfaatkan go get.

go get gopkg.in/gomail.v2

Untuk bisa mengirim email dalam bentuk HTML template pada bahasa golang kamu perlu mengubah bentuk text kedalam bentuk buffer, perhatikan kode dibawah ini

func ParseTemplate(templateFileName string, data interface{}) (string, error) {
t, err := template.ParseFiles(templateFileName)
if err != nil {
return "", err
}
buf := new(bytes.Buffer)
if err = t.Execute(buf, data); err != nil {
fmt.Println(err)
return "", err
}
return buf.String(), nil
}

 

Note :

template.ParseFiles(templateFileName) -> berfungsi mengubah text html kedalam bentuk byte

t.Execute(buf, data) -> berfungsi untuk merender struct data kedalam file html.


Perhatikan kode lengkap berikut ini :


package main

import (
"bytes"
"fmt"
"runtime"
"text/template"

"gopkg.in/gomail.v2"
)

type BodylinkEmail struct {
URL string
}

func main() {

templateData := BodylinkEmail{
URL: "https://detik.id/",
}
to := "coba@example.com"
runtime.GOMAXPROCS(1)
go SendEmailVerification(to, templateData)

fmt.Println("kirim email sedang di proses, cek email anda")
}
func SendEmail(to string, subject string, data interface{}, templateFile string) error {
result, _ := ParseTemplate(templateFile, data)
m := gomail.NewMessage()
m.SetHeader("From", "EmailSender")
m.SetHeader("To", to)
// m.SetAddressHeader("Cc", "<RECIPIENT CC>", "<RECIPIENT CC NAME>")
m.SetHeader("Subject", subject)
m.SetBody("text/html", result)
// m.Attach(templateFile) // attach whatever you want
senderPort := 5675
d := gomail.NewDialer("SenderHost", senderPort, "EmailSender", "EmailPassword")
err := d.DialAndSend(m)
if err != nil {
panic(err)
}
return err
}

func ParseTemplate(templateFileName string, data interface{}) (string, error) {
t, err := template.ParseFiles(templateFileName)
if err != nil {
return "", err
}
buf := new(bytes.Buffer)
if err = t.Execute(buf, data); err != nil {
fmt.Println(err)
return "", err
}
return buf.String(), nil
}

func SendEmailVerification(to string, data interface{}) {
var err error
template := "email_template_verifikasi.html"
subject := "sample email"
err = SendEmail(to, subject, data, template)
if err == nil {
fmt.Println("send email '" + subject + "' success")
} else {
fmt.Println(err)
}
}



kemudian buat file HTML dengan nama email_template_verifikasi.html


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>

</head>

<body>
<p><b>Hi blabla blabla,</b></p>
<p>Silakan klik link ini <a href="{{.URL}}">{{.URL}}</a> untuk verifikasi account.</p>

</body>

</html>



Note :


go SendEmailVerification(to, templateData) kode ini diproses menggunakan goroutine.

Baca juga artikel lainya :