SendGrid에서 메일을 보내는 샘플로 Go 설치
package main
import (
"encoding/base64"
"fmt"
"io/ioutil"
"log"
"os"
"strings"
"github.com/joho/godotenv"
"github.com/sendgrid/sendgrid-go"
"github.com/sendgrid/sendgrid-go/helpers/mail"
)
func main() {
err_read := godotenv.Load()
if err_read != nil {
log.Fatalf("error: %v", err_read)
}
// .envから環境変数読み込み
API_KEY := os.Getenv("API_KEY")
TOS := strings.Split(os.Getenv("TOS"), ",")
FROM := os.Getenv("FROM")
// メッセージの構築
message := mail.NewV3Mail()
// 送信元を設定
from := mail.NewEmail("", FROM)
message.SetFrom(from)
// 宛先と、対応するSubstitutionタグを指定
p := mail.NewPersonalization()
to := mail.NewEmail("", TOS[0])
p.AddTos(to)
p.SetSubstitution("%fullname%", "田中 太郎")
p.SetSubstitution("%familyname%", "田中")
p.SetSubstitution("%place%", "中野")
message.AddPersonalizations(p)
// 件名を設定
message.Subject = "[sendgrid-go-example] フクロウのお名前は%fullname%さん"
// テキストパートを設定
c := mail.NewContent("text/plain", "%familyname% さんは何をしていますか?\r\n 彼は%place%にいます。")
message.AddContent(c)
// HTMLパートを設定
c = mail.NewContent("text/html", "<strong> %familyname% さんは何をしていますか?</strong><br>彼は%place%にいます。")
message.AddContent(c)
// カテゴリ情報を付加
message.AddCategories("category1")
// カスタムヘッダを指定
message.SetHeader("X-Sent-Using", "SendGrid-API")
// 画像ファイルを添付
a := mail.NewAttachment()
file, _ := os.OpenFile("./gif.gif", os.O_RDONLY, 0600)
defer file.Close()
data, _ := ioutil.ReadAll(file)
data_enc := base64.StdEncoding.EncodeToString(data)
a.SetContent(data_enc)
a.SetType("image/gif")
a.SetFilename("owl.gif")
a.SetDisposition("attachment")
message.AddAttachment(a)
// メール送信を行い、レスポンスを表示
client := sendgrid.NewSendClient(API_KEY)
response, err := client.Send(message)
if err != nil {
log.Println(err)
} else {
fmt.Println(response.StatusCode)
fmt.Println(response.Body)
fmt.Println(response.Headers)
}
}
.envAPI_KEY=xxxxxxxxxxxxxxxx
[email protected]
[email protected]
실행 메일 발송go run src/main/main.go
Reference
이 문제에 관하여(SendGrid에서 메일을 보내는 샘플로 Go 설치), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/ohnishi/articles/66389394c9b872텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)