Go/Cookbook

【Go/Cookbook】Send Email in golang(feat. Gmail) Go언어에서 이메일 전송하기

1Q74 2023. 5. 24. 15:12

1. Description

    Go언어에서 이메일 전송하는 예제입니다. 본 예제에서는 Gmail의 smtp서버를 이용합니다.


2. Prerequisite

     다음과 같은 모듈이 필요합니다.

import (
	"crypto/tls"
	"fmt"

	gomail "github.com/go-mail/mail"
)

3. Example

     Gmail의 smtp서버를 통해 메일을 전송합니다.

package mail

import (
	"crypto/tls"
	"fmt"

	gomail "github.com/go-mail/mail"
)

type Mail struct {
}

type SmtpServer struct {
	host string
	port int
}

type Account struct {
	email    string
	password string
}

type Message struct {
	Subject string
	Msg     string
}

var mail = &Mail{}
var smtpServer = &SmtpServer{
	host: "smtp.gmail.com",
	port: 587,
}
var account = &Account{
	email:    "Gmail주소",
	password: "Gmail 앱 비밀번호",
}

var to = []string{
	"받는사람 이메일 주소#1",
	"받는사람 이메일 주소#2",
}

func NewMail() *Mail {
	return mail
}

func (*Mail) Send(message Message) {
	gm := gomail.NewMessage()
	gm.SetHeader("From", account.email)
	gm.SetHeader("To", to...)
	gm.SetHeader("Subject", message.Subject)
	gm.SetBody("text/html", message.Msg)

	dialer := gomail.NewDialer(smtpServer.host, smtpServer.port, account.email, account.password)
	dialer.TLSConfig = &tls.Config{InsecureSkipVerify: true}

	if err := dialer.DialAndSend(gm); err != nil {
		fmt.Println(err)
	}
}

4. See also

https://support.google.com/mail/answer/185833?hl=ko 

 

앱 비밀번호로 로그인 - Gmail 고객센터

도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요

support.google.com