Amazon Simple Email Service
開発者ガイド

コマンドラインを使用した E メール送信のテスト

広く利用されているアプリケーションを使用して、コマンドラインから Amazon SES SMTP インターフェイスを操作できます。ほとんどの場合、これらの方法は、SMTP インターフェイスに接続できるかどうかをテストするためのみに使用します。ただし、これらの方法を使用して、Amazon SES を使って E メールを送信する独自のアプリケーションを作成することもできます。

このセクションでは、OpenSSL (ほとんどの Linux、macOS、Unix ディストリビューションに含まれる) と Windows PowerShell (最新バージョンの Windows に含まれる) の両方を使用して接続をテストする手順と E メールを送信する手順を説明します。

前提条件

コマンドラインを使用して Amazon SES SMTP インターフェイスに接続するには、まず SMTP 認証情報を取得する必要があります。SMTP 認証情報を取得する方法の詳細については、「Amazon SES SMTP 認証情報を取得する」を参照してください。

重要

SMTP 認証情報は、スタンダードの AWS の認証情報とは異なります。2 つのタイプの認証情報は、一方をもう一方の代わりに使用することはできません。

OpenSSL を使用して SMTP インターフェイスに接続する場合は、base64 エンコードを使用して SMTP 認証情報をエンコードする必要があります。

base64 を使用して SMTP ユーザー名とパスワードをエンコードするには

  1. コマンドラインで、次のコマンドを入力して SMTP ユーザー名をエンコードします。この際、SMTPUsername をお使いの SMTP ユーザー名に置き換えます。

    echo -n "SMTPUsername" | openssl enc -base64

    このコマンド出力を書き留めます。

  2. コマンドラインで、次のコマンドを入力して SMTP パスワードをエンコードします。この際、SMTPPassword をお使いの SMTP パスワードに置き換えます。

    echo -n "SMTPPassword" | openssl enc -base64

    このコマンド出力を書き留めます。

Amazon SES SMTP インターフェイスへの接続のテスト

コマンドラインを使用すると、認証情報の入力やメッセージの送信を行うことなく、Amazon SES SMTP インターフェイスへの接続をテストできます。この手順は、基本的な接続問題のトラブルシューティングに役立ちます。

このセクションでは、OpenSSL (ほとんどの Linux、macOS、Unix ディストリビューションに含まれる) と Windows PowerShell (最新バージョンの Windows に含まれる) の両方を使用して接続をテストする手順を説明します。

Linux, macOS, or UnixWindows PowerShell
Linux, macOS, or Unix

OpenSSL を使用して Amazon SES SMTP インターフェイスに接続する方法には、ポート 587 経由で Explicit SSL を使用する方法と、ポート 465 経由で Implicit SSL を使用する方法の 2 つがあります。

Explicit SSL を使用して SMTP インターフェイスに接続するには

  • コマンドラインで、次のコマンドを入力して Amazon SES SMTP サーバーに接続します。

    openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-west-2.amazonaws.com:587

    前述のコマンドで、email-smtp.us-west-2.amazonaws.com を AWS リージョンの Amazon SES SMTP エンドポイントの URL に置き換えます。詳細については、「リージョンと Amazon SES」を参照してください。

    正常に接続されると次のような出力が表示されます。

    depth=2 C = US, O = Amazon, CN = Amazon Root CA 1 verify return:1 depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon verify return:1 depth=0 CN = email-smtp.us-west-2.amazonaws.com verify return:1 250 Ok

    約 10 秒間何もしないと、接続は自動的に終了します。

または、Implicit SSL を使用して、ポート 465 経由で SMTP インターフェイスに接続することもできます。

Implicit SSL を使用して SMTP インターフェイスに接続するには

  • コマンドラインで、次のコマンドを入力して Amazon SES SMTP サーバーに接続します。

    openssl s_client -crlf -quiet -connect email-smtp.us-west-2.amazonaws.com:465

    前述のコマンドで、email-smtp.us-west-2.amazonaws.com を AWS リージョンの Amazon SES SMTP エンドポイントの URL に置き換えます。詳細については、「リージョンと Amazon SES」を参照してください。

    正常に接続されると次のような出力が表示されます。

    depth=2 C = US, O = Amazon, CN = Amazon Root CA 1 verify return:1 depth=1 C = US, O = Amazon, OU = Server CA 1B, CN = Amazon verify return:1 depth=0 CN = email-smtp.us-west-2.amazonaws.com verify return:1 220 email-smtp.amazonaws.com ESMTP SimpleEmailService-d-VCSHDP1YZ A1b2C3d4E5f6G7h8I9j0

    約 10 秒間何もしないと、接続は自動的に終了します。

Windows PowerShell

Test-NetConnection コマンドレットを使用して Amazon SES SMTP サーバーに接続できます。

  • Windows PowerShell で、次のコマンドを入力して Amazon SES SMTP サーバーに接続します。

    Test-NetConnection -Port 587 -ComputerName email-smtp.us-west-2.amazonaws.com

    前述のコマンドで、email-smtp.us-west-2.amazonaws.com を AWS リージョンの Amazon SES SMTP エンドポイントの URL に置き換えます。詳細については、「リージョンと Amazon SES」を参照してください。

    接続に成功すると、次の例のような出力が表示されます。

    ComputerName : email-smtp.us-west-2.amazonaws.com RemoteAddress : 52.35.84.126 RemotePort : 587 InterfaceAlias : Ethernet SourceAddress : 172.31.20.46 TcpTestSucceeded : True

コマンドラインを使用し、Amazon SES SMTP インターフェイスを介して E メールを送信する

コマンドラインを使用して、Amazon SES SMTP インターフェイスを介してメッセージを送信することもできます。この手順は、SMTP 認証情報をテストする場合や、Amazon SES を使用して送信するメッセージを特定の受信者が受信できるかどうかをテストする場合に役立ちます。

このセクションでは、OpenSSL (ほとんどの Linux、macOS、Unix ディストリビューションに含まれる) と Windows PowerShell (最新バージョンの Windows に含まれる) の両方を使用して E メールを送信する手順を説明します。

Linux, macOS, or UnixWindows PowerShell
Linux, macOS, or Unix

E メール送信者が SMTP サーバーに接続すると、クライアントはスタンダードなリクエストのセットを発行し、サーバーは各リクエストにスタンダードのレスポンスで応答します。この一連のリクエストとレスポンスは SMTP 対話と呼ばれます。OpenSSL を使用して Amazon SESSMTP サーバーに接続すると、サーバーは SMTP 対話が発生することを予想します。

この例では、すべてのクライアントのリクエストをテキストファイルに追加し、そのファイルを前のセクションで示した OpenSSL コマンドの入力の 1 つとして使用します。

SMTP インターフェイスを使用してコマンドラインから E メールを送信するには

  1. テキストエディタで新規ファイルを作成します。ファイルに次のコードを貼り付けます。

    EHLO example.com AUTH LOGIN Base64EncodedSMTPUserName Base64EncodedSMTPPassword MAIL FROM: sender@example.com RCPT TO: recipient@example.com DATA X-SES-CONFIGURATION-SET: ConfigSet From: Sender Name <sender@example.com> To: recipient@example.com Subject: Amazon SES SMTP Test This message was sent using the Amazon SES SMTP interface. . QUIT
  2. 前のステップで作成したファイルを次のように変更します。

    • example.com を送信ドメインに置き換えます。

    • Base64EncodedSMTPUserName をお使いの base64 エンコード SMTP ユーザー名に置き換えます。

    • Base64EncodedSMTPPassword をお使いの base64 エンコード SMTP パスワードに置き換えます。

    • sender@example.com を送信元 E メールアドレスに置き換えます。この ID は検証する必要があります。

    • recipient@example.com を送信先アドレスに置き換えます。Amazon SES アカウントがサンドボックスにまだある場合は、このアドレスも検証済みである必要があります。

    • ConfigSet を、この E メールを送信する際に使用する設定セットの名前に置き換えます。

    終了したら、input.txt としてファイルを保存します。

  3. コマンドラインで、次のいずれかのオプションを選択します。

    • Explicit SSL を使用してポート 587 経由で送信するには – 次のコマンドを入力します。

      openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-west-2.amazonaws.com:587 < input.txt
    • Implicit SSL を使用してポート 465 経由で送信するには – 次のコマンドを入力します。

      openssl s_client -crlf -quiet -connect email-smtp.us-west-2.amazonaws.com:465 < input.txt

    注記

    email-smtp.us-west-2.amazonaws.com を自分の AWS リージョンの Amazon SES SMTP エンドポイントの URL に置き換えます。詳細については、「リージョンと Amazon SES」を参照してください。

    メッセージが Amazon SES によって受け入れられた場合は、次の例のような出力が表示されます。

    250 Ok 01010160d7de98d8-21e57d9a-JZho-416c-bbe1-8ebaAexample-000000

    250 Ok に続く数字の文字列とテキストは、E メールのメッセージ ID です。

    注記

    約 10 秒間何もしないと、接続は自動的に終了します。

Windows PowerShell

Net.Mail.SmtpClient クラスを使用して、Windows PowerShell を介して E メールを送信できます。

SMTP インターフェイスを使って Windows PowerShell から E メールを送信するには

  • Windows PowerShell で次のコマンドを入力します。

    $EmailFrom = "sender@example.com" $EmailTo = "recipient@example.com" $Subject = "Test email sent from Amazon SES" $Body = "This message was sent from Amazon SES using Windows PowerShell." $SMTPServer = "email-smtp.us-west-2.amazonaws.com" $SMTPClient = New-Object Net.Mail.SmtpClient($SmtpServer, 587) $SMTPClient.EnableSsl = $true $SMTPClient.Credentials = New-Object System.Net.NetworkCredential("SMTPUserName", "SMTPPassword"); $SMTPClient.Send($EmailFrom, $EmailTo, $Subject, $Body) Remove-Variable -Name SMTPClient

    上のコマンドに、以下の変更を加えます。

    • sender@example.com を、メッセージの送信元の E メールアドレスに置き換えます。

    • recipient@example.com をメッセージの送信先アドレスに置き換えます。

    • email-smtp.us-west-2.amazonaws.com を自分の AWS リージョンの Amazon SES SMTP エンドポイントの URL に置き換えます。詳細については、「リージョンと Amazon SES」を参照してください。

    • SMTPUserName を SMTP ユーザー名に置き換えます。

    • SMTPPassword を SMTP パスワードに置き換えます。

    メッセージが Amazon SES によって受け入れられた場合、このコマンドは出力を生成せずに終了します。