SMTPでメール送信する

SMTPとは?

SMTPsimple mail transfer protocol)はあるサーバから他のサーバにメールを送信するための簡単な方法です。SendGridはユーザのメールクライアントもしくはサーバの代わりにメールを配信するSMTPサービスを提供します。

SendGridのSMTP APIは、メッセージに挿入するX-SMTPAPIヘッダを通じて、送信するメールを開発者がカスタマイズできるようにする機能です。

X-SMTPAPIヘッダはSendGridにそのメールの扱いを指示するためのものなので、最終的に送信されるメッセージからは削除されます。

Telnetでテストメールを送信する

2024年4月以降、Domain AuthenticationもしくはSingle Sender Verificationの設定が必須になり、送信元に指定するドメインまたはメールアドレスで設定を完了させていない場合はメールを送信できません。詳しくはこちらをご覧ください。

はじめに

  • SendGridダッシュボードのAPI KeysページでAPIキーを作成します。
  • コマンドライン、bash、シェル、ターミナル機能(ご利用のOSに依存します)を開きます。このウィンドウでTelnet接続を行うためにコマンド入力を行います。
  • APIキーをBase64でエンコードします。エンコードのためにAPIキーを外部のWebページに入力するのは安全ではありません。bashを利用して変換することをお勧めします。MacもしくはLinuxをご利用の場合、あらかじめインストールされているOpenSSLパッケージが利用できます。OpenSSLを使用してAPIキーを変換するには、次のコマンドを入力してください(<<YOUR_API_KEY>>の部分を作成したAPIキーに置き換えてください)。
    echo -n '<<YOUR_API_KEY>>' | openssl base64
    後で使用するため、変換したAPIキーを保存しておきます。この際、改行や空白が含まれないように注意してください。

Telnetはバックスペースを正しく扱えません。このため、コマンドは正確に入力するか、コピー&ペーストして入力してください。

TelnetでSMTPメールを送信する

「>」で始まる行は、コマンドの入力が必要です。ただし、「#」以降の文字列は補足説明用のコメントであるため入力不要です。
2XX・3XXなどの数字で始まる行は、サーバからの応答を出力したものです。

TelnetでSendGridのメールサーバ smtp.sendgrid.net に接続します。

1
2
> telnet smtp.sendgrid.net 587
220 SG ESMTP service ready at ismtpd0000xxxxxx.sendgrid.net

220の応答が確認できたら、EHLOに続けて自分のドメインを入力します。

1
2
3
4
5
6
7
8
> EHLO kke.co.jp
250-smtp.sendgrid.net
250-8BITMIME
250-PIPELINING
250-SIZE 31457280
250-STARTTLS
250-AUTH PLAIN LOGIN
250 AUTH=PLAIN LOGIN

SendGridサーバに接続できたらユーザ名/パスワードを入力し、ログインします。ユーザ名は、「apikey」をBASE64エンコードした固定文字列「YXBpa2V5」を、パスワードは、APIキーをBASE64エンコードした文字列(「はじめに」で作成したもの)を入力します。

1
2
3
4
5
6
> AUTH LOGIN
334 VXNlcm5hbWU6 #「ユーザ名」
> YXBpa2V5       # 固定文字列「apikey」をBASE64エンコードした文字列を入力 
334 UGFzc3dvcmQ6 #「パスワード」
> ********       # APIキーをBASE64エンコードした文字列を入力
235 Authentication successful

235 Authentication successfulが表示されれば、ユーザ名/パスワードが正しく入力され、指定したポートでsmtp.sendgrid.netとの接続が確立したことを意味します。

送信元メールアドレスと宛先メールアドレスを入力します。

1
2
3
4
> MAIL FROM: fromaddress@example.com
250 Sender address accepted
> RCPT TO: toaddress@example.com
250 Recipient address accepted

メールコンテンツの入力開始を意味するDATAを入力します。

1
2
> DATA
354 Continue

354の応答が確認できたら、メールヘッダ情報(To/From/Subjectなど)を入力します。次に、空行を挿入してからメール本文(ボディ部)を入力します。最後にピリオドを打ってメールコンテンツの入力を終了します。

1
2
3
4
5
6
7
> To: toaddress@example.com
> From: fromaddress@kke.co.jp
> Subject: test mail
>                              # 空行
> This is body of the message. # メール本文
> .                            # 最後にピリオド
250 Ok: queued as …

250 Okの応答は、このメールが送信キューに登録されたことを意味します。このキューはすぐに処理され、メールが送信されます。

QUITを入力してTelnet接続を切断します。

1
2
> QUIT
221 See you later

SMTP APIを用いたコンテンツの構築方法についてはSMTPメールの構築を参照してください。

追加のリソース