Aku Kalah, Aku MerindukanmuPada akhirnya, aku paham bahwa tidak ada yang abadi. Semua punya waktunya sendiri, dan waktumu bersamaku sudah usai. Jadi, sekarang aku dipaksa melepaskanmu di saat aku belum mampu. Buy |
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
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 mainimport (
"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 :
Baca juga artikel lainya :