GoでSendGridからメール送信するサンプル実装
2177 ワード
src/main/main.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)
}
}
.env
API_KEY=xxxxxxxxxxxxxxxx
[email protected]
[email protected]
メール送信実行
go run src/main/main.go
Author And Source
この問題について(GoでSendGridからメール送信するサンプル実装), 我々は、より多くの情報をここで見つけました https://zenn.dev/ohnishi/articles/66389394c9b872著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Collection and Share based on the CC protocol