SendGridさんのアカウント開設
アカウント作成(*1) -> コンパネメニュー -> Settings -> API Keys -> Create API Key(右上ボタン) -> 適当にAPI Keyの名前つけて Create&Viewボタン押下 -> API Keyをメモっておく
*1
アカウントを作成するのに審査があります。私はいくつかの選択肢の中からサイト作成を選択しました。ご担当者さんのアナウンスといい作業はとってもスムーズに終了。ちなみに表題の5分にはこの申請についての時間は含んでいません。つまりインチキです。
SendGridさんのサンプルを参照したが...
Goでメール送信!SendGridを使って簡単に実装する方法
書いててなんかおかしいなと思ったら、この記事5年以上前のものです。
スクラッチで
1: ディレクトリ(sendgrid-example1)作る
2: 上のディレクトリに移動してgomod初期化とパッケージインストール
go mod init sendgrid-example1
go get -u github.com/sendgrid/sendgrid-go
3: コード
package main
import (
"fmt"
"github.com/sendgrid/sendgrid-go"
"github.com/sendgrid/sendgrid-go/helpers/mail"
)
// 記述されてるアドレスは架空のものです
func main() {
from := mail.NewEmail("dobusarai info", "info@dobudobuo.net")
subject := "mail test subject"
to := mail.NewEmail("hogehoge", "dobusarai@dobudobuo.net")
plainTextContent := "and easy to do anywhere, even with Go"
htmlContent := "<strong>and easy to do anywhere, even with Go</strong>"
message := mail.NewSingleEmail(from, subject, to, plainTextContent, htmlContent)
client := sendgrid.NewSendClient("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX<API KEY>XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX")
response, err := client.Send(message)
if err != nil {
fmt.Println(err)
} else {
fmt.Println(response.StatusCode)
fmt.Println(response.Body)
fmt.Println(response.Headers)
}
}
goをちょっと学びながら書いているが、初学者殺しのクソブログエントリが多すぎる。結局githubのreadmeとソースコードを読むのが一番速く済みますね。英語はDeepLさんの出番です!あ、goはシングル(ファイル)バイナリになったりコンパイル速度とか良いところ多いけど、やはり例外がないので書くのかったるい。あとgo modulesはクソだと思う。これ↓とか。
Go Modules でインターネット上のレポジトリにはないローカルパッケージを import する方法
なんやねんインターネット上にパッケージがあるのが前提て。これ使うな?デファクトスタンダード技術使うなとか、それこそ初学者殺しでしょ……。NameSpace & Classに慣れきっているのでどうすりゃいいんだこれ?ってのがある。goはClassの概念がないので初めは細かくパッケージ切ってやっていこうかと思ったのだけど、この仕様のせいでダルすぎてなー。どうするのが最適解なのか。まーそのうちわかんだろ。
おわり。