Email パッケージを使用して Go でメールを送信する方法
アプリを構築する際には、通知から認証まで、さまざまな目的でメールを送信する必要があります。Go は、電子メールを送信するための標準ライブラリにsmtpおよびmailパッケージを提供します。Go エコシステムには、サードパーティの電子メール パッケージも多数あります。
組み込みのメール パッケージにより、メールの送信が複雑なタスクになります。サーバー側のアプリケーション開発者でない場合は、 smtpおよびメールパッケージの使用と構成が難しいと感じるかもしれません。
人気のある代替手段の 1 つは、複雑なメール送信を抽象化した Jordan Wright のメールパッケージです。また、 smtpおよびmailパッケージには見られない機能も追加されています。
電子メール パッケージの使用を開始する
emailパッケージは、軽量で堅牢で柔軟なライブラリであり、そのシンプルさで人気があります。ほんの数行のコードで、添付ファイルや HTML コンテンツなどを含むメールを作成して送信できます。このパッケージは、安全な SMTP 接続や複数の受信者などの高度な機能もサポートしているため、電子メールのニーズに対応する多用途のツールとなっています。
電子メール パッケージは、CC および BCC フィールド、複数の形式の電子メール アドレス、開封確認、およびカスタム ヘッダーもサポートしています。
このパッケージは Go 標準ライブラリに組み込まれていないため、go getコマンドを使用してインストールする必要があります。email パッケージは、Go バージョン 1.15 以降をサポートしています。
新しいプロジェクトを初期化した後、このコマンドを実行して、パッケージをプロジェクトの依存関係にインストールします。
go get github.com/jordan-wright/email
メール パッケージをインストールしたら、インストール パスに相対的な場所を指定してインポートできます。
import (
"fmt"
"github.com/jordan-wright/email"
"net/smtp"
)
fmtパッケージを使用して出力をコンソールに出力し、smtpパッケージを認証目的で使用します。
メールパッケージでメールを送る
メールのデータを格納するには、変数を宣言する必要があります。メールとパスワードの変数を宣言します。
mail: = "your email"
password: = "your app password"
セキュリティを強化するために、パスワードをハードコーディングするか、環境変数ファイルを使用できます。
mail変数とpassword変数には、それぞれメールとパスワードを保持する必要があります。
メールのホスト アドレスとポート番号の変数を宣言する必要があります。Yahoo メールのホスト アドレスとポート番号は次のとおりです。
hostAddress: = "smtp.mail.yahoo.com"
hostPort: = "465"
また、メールパッケージでメールを送信するには、新しいメール インスタンスを作成する必要があります。メールパッケージの NewEmail メソッドを使用して、メールのメール インスタンスを初期化できます。
newEmail: = email.NewEmail()
NewEmailメソッドは、メールの要素に対して変更できる構造体インスタンスを返します。
構造体のFromフィールドとToフィールドを使用して、送信者と受信者の電子メールを電子メール インスタンスに追加できます。
newEmail.From = mail
newEmail.To = []string{"list of recipients"}
Toフィールドは、すべての受信者アドレスを宣言するために使用できる無制限の容量を持つ文字列のスライスです。
構造体インスタンスのBccおよびCcフィールドを使用して、電子メールのCCおよびBCCフィールドを追加できます。
newEmail.Bcc = []string{"list of bcc"}
newEmail.Cc = []string{"list of cc"}
メールの内容については、構造体のSubjectフィールドとTextフィールドを使用して、メールの件名とテキスト コンテンツを追加できます。件名は文字列フィールドで、テキスト コンテンツはバイト スライスです。
newEmail.Subject = "The Email subject"
newEmail.Text = []byte("Body of your email")
必要なフィールドをすべて追加したら、メール インスタンスのSendメソッドを使用してメールを送信できます。Sendメソッドは、ホスト アドレス、ホスト ポート番号、およびsmtpパッケージのPlainAuthのインスタンスを受け取ります。
err: = newEmail.Send(
fmt.Sprintf("%s:%s", hostAddress, hostPort),
smtp.PlainAuth("", mail, password, hostAddress)
)
if err! = nil {
fmt.Println("There was an error sending the mail")
} else {
fmt.Println("The mail was sent successfully")
}
Sendメソッドは、処理可能なエラーを返すか、エラーがない場合はnilを返します。
smtpパッケージでメールを送信するために必要な行数よりも少ない行で、 emailパッケージでメールを正常に送信できました。
組み込みの SMTP パッケージでメールを送信できます
Go はよく計画された言語です。その標準ライブラリには、外部依存関係やサードパーティ パッケージなしで完全な Web アプリケーションを構築するために必要なほとんどの機能が含まれているからです。
smtpパッケージは、 emailパッケージと同様の機能を持つさまざまなサービスでメールを送信するのに便利です。
コメントを残す