

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Menguji koneksi Anda ke antarmuka SMTP Amazon SES menggunakan baris perintah
<a name="send-email-smtp-client-command-line"></a>

Anda dapat menggunakan metode yang dijelaskan di bagian ini dari baris perintah untuk menguji koneksi Anda ke titik akhir SMTP Amazon SES, memvalidasi kredensial SMTP, dan memecahkan masalah koneksi. Prosedur ini menggunakan alat dan pustaka yang termasuk dengan sistem operasi yang paling umum.

Untuk informasi tambahan tentang pemecahan masalah koneksi SMTP, lihat [Masalah SMTP Amazon SES](troubleshoot-smtp.md).

## Prasyarat
<a name="send-email-smtp-client-command-line-prereqs"></a>

Ketika Anda terhubung ke antarmuka SMTP Amazon SES, Anda harus menyediakan satu set kredensial SMTP. Kredensyal SMTP ini berbeda dari kredensyal standar Anda. AWS Dua tipe kredensial tidak dapat dipertukarkan. Untuk informasi selengkapnya tentang mendapatkan kredensial SMTP Anda, lihat [Mendapatkan kredensial SMTP Amazon SES](smtp-credentials.md).

## Menguji koneksi Anda ke antarmuka SMTP Amazon SES
<a name="send-email-smtp-client-command-line-testing"></a>

Anda dapat menggunakan baris perintah untuk menguji koneksi Anda ke antarmuka SMTP Amazon SES tanpa mengautentikasi atau mengirim pesan apa pun. Prosedur ini berguna untuk memecahkan masalah konektivitas dasar. Jika koneksi pengujian Anda gagal, lihat[Masalah SMTP](troubleshoot-smtp.md).

Bagian ini mencakup prosedur untuk menguji koneksi Anda menggunakan OpenSSL (yang disertakan dengan sebagian besar distribusi Linux, macOS, dan Unix, dan juga tersedia untuk Windows) dan `Test-NetConnection` cmdlet PowerShell di (yang disertakan dengan versi Windows terbaru).

------
#### [ Linux, macOS, or Unix ]

Ada dua cara untuk terhubung ke antarmuka SMTP Amazon SES dengan OpenSSL: menggunakan SSL eksplisit melalui port 587, atau menggunakan SSL implisit melalui port 465.

**Untuk terhubung ke antarmuka SMTP menggunakan SSL eksplisit**
+ Di baris perintah, masukkan perintah berikut untuk menghubungkan ke server SMTP Amazon SES:

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

  Pada perintah sebelumnya, ganti *email-smtp.us-west-2.amazonaws.com* dengan URL titik akhir SMTP Amazon SES untuk Wilayah Anda. AWS Untuk informasi selengkapnya, lihat [Wilayah dan Amazon SES](regions.md).

  Jika koneksi berhasil, Anda akan menemukan output yang serupa dengan berikut ini:

  ```
  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
  ```

  Koneksi secara otomatis ditutup setelah tidak aktif selama sekitar 10 detik.

Atau, Anda dapat menggunakan SSL implisit untuk terhubung ke antarmuka SMTP melalui port 465.

**Untuk terhubung ke antarmuka SMTP menggunakan SSL implisit**
+ Di baris perintah, masukkan perintah berikut untuk menghubungkan ke server SMTP Amazon SES:

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

  Pada perintah sebelumnya, ganti *email-smtp.us-west-2.amazonaws.com* dengan URL titik akhir SMTP Amazon SES untuk Wilayah Anda. AWS Untuk informasi selengkapnya, lihat [Wilayah dan Amazon SES](regions.md).

  Jika koneksi berhasil, Anda akan menemukan output yang serupa dengan berikut ini:

  ```
  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
  ```

  Koneksi secara otomatis ditutup setelah tidak aktif selama sekitar 10 detik.

------
#### [ PowerShell ]

Anda dapat menggunakan [Test- NetConnection](https://docs.microsoft.com/en-us/powershell/module/nettcpip/test-netconnection) cmdlet in PowerShell untuk terhubung ke server SMTP Amazon SES.

**catatan**  
Cmdlet `Test-NetConnection` dapat menentukan apakah komputer Anda dapat terhubung ke titik akhir SMTP Amazon SES. Namun, ini tidak menguji apakah komputer Anda dapat membuat koneksi SSL implisit atau eksplisit ke titik akhir SMTP. Untuk menguji koneksi SSL, Anda dapat menginstal OpenSSL untuk Windows untuk mengirim email pengujian.

**Untuk terhubung ke antarmuka SMTP menggunakan cmdlet `Test-NetConnection`**
+ Masuk PowerShell, masukkan perintah berikut untuk terhubung ke server SMTP Amazon SES:

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

  Pada perintah sebelumnya, ganti *email-smtp.us-west-2.amazonaws.com* dengan URL titik akhir SMTP Amazon SES untuk AWS Wilayah Anda, dan ganti *587* dengan nomor port. Untuk informasi selengkapnya tentang titik akhir wilayah di Amazon SES, lihat [Wilayah dan Amazon SES](regions.md).

  Jika koneksi berhasil, Anda akan menemukan output yang serupa dengan contoh berikut:

  ```
  ComputerName     : email-smtp.us-west-2.amazonaws.com
  RemoteAddress    : 198.51.100.126
  RemotePort       : 587
  InterfaceAlias   : Ethernet
  SourceAddress    : 203.0.113.46
  TcpTestSucceeded : True
  ```

------

## Menggunakan baris perintah untuk mengirim email menggunakan antarmuka SMTP Amazon SES
<a name="send-email-using-openssl"></a>

Anda juga dapat menggunakan baris perintah untuk mengirim pesan menggunakan antarmuka SMTP Amazon SES. Prosedur ini berguna untuk menguji kredensial SMTP dan untuk menguji kemampuan penerima tertentu untuk menerima pesan yang Anda kirim dengan menggunakan Amazon SES.

------
#### [ Linux, macOS, or Unix ]

Saat pengirim email terhubung ke server SMTP, klien mengeluarkan set permintaan standar, dan server membalas setiap permintaan dengan respons standar. Serangkaian permintaan dan respons ini disebut *Percakapan SMTP*. Ketika Anda terhubung ke server SMTP Amazon SES menggunakan OpenSSL, server mengharapkan percakapan SMTP terjadi.

Ketika Anda menggunakan OpenSSL untuk terhubung ke antarmuka SMTP, Anda harus mengodekan kredensial SMTP Anda menggunakan pengodean base64. Bagian ini mencakup prosedur untuk pengodean kredensial Anda menggunakan base64.

**Untuk mengirim email dari baris perintah menggunakan antarmuka SMTP**

1. Masukkan yang berikut ini di baris perintah dan ganti *email-smtp.us-west-2.amazonaws.com* dengan URL titik akhir SMTP Amazon SES untuk Anda. Wilayah AWS Untuk informasi lebih lanjut, lihat[Wilayah dan Amazon SES](regions.md). :

   ```
    1. #!/bin/bash
    2. 
    3. # Prompt user to provide following information
    4. read -p "Configuration set: " CONFIGSET
    5. read -p "Enter SMTP username: " SMTPUsername
    6. read -p "Enter SMTP password: " SMTPPassword
    7. read -p "Sender email address: " MAILFROM
    8. read -p "Receiver email address: " RCPT
    9. read -p "Email subject: " SUBJECT
   10. read -p "Message to send: " DATA
   11. 
   12. echo
   13. 
   14. # Encode SMTP username and password using base64
   15. EncodedSMTPUsername=$(echo -n "$SMTPUsername" | openssl enc -base64)
   16. EncodedSMTPPassword=$(echo -n "$SMTPPassword" | openssl enc -base64)
   17. 
   18. # Construct the email
   19. Email="EHLO example.com
   20. AUTH LOGIN
   21. $EncodedSMTPUsername
   22. $EncodedSMTPPassword
   23. MAIL FROM: $MAILFROM
   24. RCPT TO: $RCPT
   25. DATA
   26. X-SES-CONFIGURATION-SET: $CONFIGSET
   27. From: $MAILFROM
   28. To: $RCPT
   29. Subject: $SUBJECT
   30. 
   31. $DATA
   32. .
   33. QUIT"
   34. 
   35. echo "$Email" | openssl s_client -crlf -quiet -starttls smtp -connect email-smtp.us-west-2.amazonaws.com:587
   ```

1. Pada prompt untuk setiap variabel, masukkan nilai Anda.

1. 
   + Untuk mengirim menggunakan SSL implisit melalui port 465, gunakan:

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

   Jika pesan diterima oleh Amazon SES, Anda akan menemukan output yang menyerupai contoh berikut:

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

   String angka dan teks yang mengikuti `250 Ok` adalah ID pesan email.
**catatan**  
Koneksi ditutup secara otomatis setelah tidak aktif selama sekitar 10 detik.

------
#### [ PowerShell ]

Anda dapat menggunakan [Net.Mail. SmtpClient](https://docs.microsoft.com/en-us/dotnet/api/system.net.mail.smtpclient?view=netframework-4.8)kelas untuk mengirim email menggunakan SSL eksplisit melalui port 587.

**catatan**  
Kelas `Net.Mail.SmtpClient` telah secara resmi usang, dan Microsoft merekomendasikan Anda menggunakan pustaka pihak ke tiga. Kode ini hanya ditujukan untuk tujuan pengujian saja, dan tidak boleh digunakan untuk beban kerja produksi.

**Untuk mengirim email melalui PowerShell menggunakan SSL eksplisit**

1. Di editor teks, buat file baru. Tempel kode berikut ke file:

   ```
   function SendEmail($Server, $Port, $Sender, $Recipient, $Subject, $Body) {
       $Credentials = [Net.NetworkCredential](Get-Credential)
   
       $SMTPClient = New-Object Net.Mail.SmtpClient($Server, $Port)
       $SMTPClient.EnableSsl = $true
       $SMTPClient.Credentials = New-Object System.Net.NetworkCredential($Credentials.Username, $Credentials.Password);
   
       try {
           Write-Output "Sending message..."
           $SMTPClient.Send($Sender, $Recipient, $Subject, $Body)
           Write-Output "Message successfully sent to $($Recipient)"
       } catch [System.Exception] {
           Write-Output "An error occurred:"
           Write-Error $_
       }
   }
   
   function SendTestEmail(){
       $Server = "email-smtp.us-west-2.amazonaws.com"
       $Port = 587
   
       $Subject = "Test email sent from Amazon SES"
       $Body = "This message was sent from Amazon SES using PowerShell (explicit SSL, port 587)."
   
       $Sender = "sender@example.com"
       $Recipient = "recipient@example.com"
   
       SendEmail $Server $Port $Sender $Recipient $Subject $Body
   }
   
   SendTestEmail
   ```

   Setelah selesai, simpan file sebagai `SendEmail.ps1`.

1. Buat perubahan berikut ke file yang Anda buat di langkah sebelumnya:
   + Ganti *sender@example.com* dengan alamat email tempat Anda ingin mengirim pesan.
   + Ganti *recipient@example.com* dengan alamat email yang ingin Anda kirimi pesan.
   + Ganti *email-smtp.us-west-2.amazonaws.com* dengan URL titik akhir SMTP Amazon SES untuk Wilayah Anda. AWS Untuk informasi selengkapnya, lihat [Wilayah dan Amazon SES](regions.md).

1. Di PowerShell, masukkan perintah berikut:

   ```
   .\path\to\SendEmail.ps1
   ```

   Pada perintah sebelumnya, ganti *path\$1to\$1SendEmail.ps1* dengan path ke file yang Anda buat di langkah 1.

1. Saat diminta, masukkan nama pengguna dan kata sandi SMTP Anda.

Atau, Anda dapat menggunakan [System.Web.Mail. SmtpMail](https://docs.microsoft.com/en-us/dotnet/api/system.web.mail.smtpmail?view=netframework-4.8)kelas untuk mengirim email menggunakan SSL implisit melalui port 465.

**catatan**  
Kelas `System.Web.Mail.SmtpMail` telah secara resmi usang, dan Microsoft merekomendasikan Anda menggunakan pustaka pihak ke tiga. Kode ini hanya ditujukan untuk tujuan pengujian saja, dan tidak boleh digunakan untuk beban kerja produksi.

**Untuk mengirim email melalui PowerShell menggunakan SSL implisit**

1. Di editor teks, buat file baru. Tempel kode berikut ke file:

   ```
   [System.Reflection.Assembly]::LoadWithPartialName("System.Web") > $null
   
   function SendEmail($Server, $Port, $Sender, $Recipient, $Subject, $Body) {
       $Credentials = [Net.NetworkCredential](Get-Credential)
   
       $mail = New-Object System.Web.Mail.MailMessage
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", $Server)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserverport", $Port)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpusessl", $true)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", $Credentials.UserName)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", $Credentials.Password)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout", $timeout / 1000)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 2)
       $mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1)
   
       $mail.From = $Sender
       $mail.To = $Recipient
       $mail.Subject = $Subject
       $mail.Body = $Body
   
       try {
           Write-Output "Sending message..."
           [System.Web.Mail.SmtpMail]::Send($mail)
           Write-Output "Message successfully sent to $($Recipient)"
       } catch [System.Exception] {
           Write-Output "An error occurred:"
           Write-Error $_
       }
   }
   
   function SendTestEmail(){
       $Server = "email-smtp.us-west-2.amazonaws.com"
       $Port = 465
       
       $Subject = "Test email sent from Amazon SES"
       $Body = "This message was sent from Amazon SES using PowerShell (implicit SSL, port 465)."
   
       $Sender = "sender@example.com"
       $Recipient = "recipient@example.com"
   
       SendEmail $Server $Port $Sender $Recipient $Subject $Body
   }
   
   SendTestEmail
   ```

   Setelah selesai, simpan file sebagai `SendEmail.ps1`.

1. Buat perubahan berikut ke file yang Anda buat di langkah sebelumnya:
   + Ganti *sender@example.com* dengan alamat email tempat Anda ingin mengirim pesan.
   + Ganti *recipient@example.com* dengan alamat email yang ingin Anda kirimi pesan.
   + Ganti *email-smtp.us-west-2.amazonaws.com* dengan URL titik akhir SMTP Amazon SES untuk Wilayah Anda. AWS Untuk informasi selengkapnya, lihat [Wilayah dan Amazon SES](regions.md).

1. Di PowerShell, masukkan perintah berikut:

   ```
   .\path\to\SendEmail.ps1
   ```

   Pada perintah sebelumnya, ganti *path\$1to\$1SendEmail.ps1* dengan path ke file yang Anda buat di langkah 1.

1. Saat diminta, masukkan nama pengguna dan kata sandi SMTP Anda.

------