

 [Panduan Referensi API AWS SDK untuk JavaScript V3](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/) menjelaskan secara rinci semua operasi API untuk AWS SDK untuk JavaScript versi 3 (V3). 

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

# Mengirim email menggunakan Amazon SES
<a name="ses-examples-sending-email"></a>

![\[JavaScript code example that applies to Node.js execution\]](http://docs.aws.amazon.com/id_id/sdk-for-javascript/v3/developer-guide/images/nodeicon.png)

**Contoh kode Node.js ini menunjukkan:**
+ Kirim teks atau email HTML.
+ Kirim email berdasarkan template email.
+ Kirim email massal berdasarkan template email.

Amazon SES API menyediakan dua cara berbeda bagi Anda untuk mengirim email, tergantung pada seberapa banyak kontrol yang Anda inginkan atas komposisi pesan email: diformat dan mentah. Untuk detailnya, lihat [Mengirim email berformat menggunakan Amazon SES API](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-formatted.html) dan [Mengirim email mentah menggunakan Amazon SES API](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/send-email-raw.html).

## Skenario
<a name="ses-examples-sending-email-scenario"></a>

Dalam contoh ini, Anda menggunakan serangkaian modul Node.js untuk mengirim email dengan berbagai cara. Modul Node.js menggunakan SDK JavaScript untuk membuat dan menggunakan templat email menggunakan metode kelas `SES` klien berikut:
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/SendEmailCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/SendEmailCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/SendTemplatedEmailCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/SendTemplatedEmailCommand/)
+ [https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/SendBulkTemplatedEmailCommand/](https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/Package/-aws-sdk-client-ses/Class/SendBulkTemplatedEmailCommand/)

## Tugas prasyarat
<a name="ses-examples-sending-emails-prerequisites"></a>

Untuk mengatur dan menjalankan contoh ini, Anda harus terlebih dahulu menyelesaikan tugas-tugas ini:
+ Siapkan lingkungan proyek untuk menjalankan TypeScript contoh Node ini, dan instal modul yang diperlukan AWS SDK untuk JavaScript dan pihak ketiga. Ikuti instruksi pada [ GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javascriptv3/example_code/ses/README.md).
+ Buat file konfigurasi bersama dengan kredensi pengguna Anda. *Untuk informasi selengkapnya tentang menyediakan file kredensial bersama, lihat File [konfigurasi dan kredensial bersama di Panduan Referensi Alat](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) dan Alat.AWS SDKs *

**penting**  
Contoh-contoh ini menunjukkan bagaimana untuk objek layanan import/export klien dan perintah menggunakan ECMAScript6 (ES6).  
Ini membutuhkan Node.js versi 13.x atau lebih tinggi. Untuk mengunduh dan menginstal versi terbaru dari Node.js, lihat [unduhan Node.js.](https://nodejs.org/en/download) .
Jika Anda lebih suka menggunakan sintaks CommonJS, lihat. [JavaScript ES6/CommonJS sintaks](sdk-example-javascript-syntax.md)

## Persyaratan pengiriman pesan email
<a name="ses-examples-sending-msail-reqs"></a>

Amazon SES membuat pesan email dan segera mengantri untuk dikirim. Untuk mengirim email menggunakan `SendEmailCommand` metode ini, pesan Anda harus memenuhi persyaratan berikut:
+ Anda harus mengirim pesan dari alamat email atau domain yang diverifikasi. Jika Anda mencoba mengirim email menggunakan alamat atau domain yang tidak diverifikasi, operasi akan menghasilkan `"Email address not verified"` kesalahan.
+ Jika akun Anda masih dalam kotak pasir Amazon SES, Anda hanya dapat mengirim ke alamat atau domain terverifikasi, atau ke alamat email yang terkait dengan Simulator Kotak Surat Amazon SES. Untuk informasi selengkapnya, lihat [Memverifikasi alamat email dan domain](https://docs.aws.amazon.com/ses/latest/DeveloperGuide/verify-addresses-and-domains.html) di Panduan Pengembang Layanan Email Sederhana Amazon.
+ Ukuran total pesan, termasuk lampiran, harus lebih kecil dari 10 MB.
+ Pesan harus menyertakan setidaknya satu alamat email penerima. Alamat penerima dapat berupa alamat Kepada:, alamat CC:, atau alamat BCC:. Jika alamat email penerima tidak valid (yaitu, tidak dalam format`UserName@[SubDomain.]Domain.TopLevelDomain`), seluruh pesan ditolak, bahkan jika pesan berisi penerima lain yang valid.
+ Pesan tidak dapat menyertakan lebih dari 50 penerima di bidang Kepada:, CC: dan BCC:. Jika Anda perlu mengirim pesan email ke audiens yang lebih besar, Anda dapat membagi daftar penerima Anda menjadi grup 50 atau kurang, dan kemudian memanggil `sendEmail` metode beberapa kali untuk mengirim pesan ke setiap grup.

## Mengirim email
<a name="ses-examples-sendmail"></a>

Dalam contoh ini, gunakan modul Node.js untuk mengirim email dengan Amazon SES. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`sesClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SES. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SESClient } from "@aws-sdk/client-ses";
// Set the AWS Region.
const REGION = "us-east-1";
// Credentials are automatically resolved using the AWS SDK credential provider chain.
// For more information, see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
// Create SES service object.
const sesClient = new SESClient({ region: REGION });
export { sesClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/libs/sesClient.js).

Buat modul Node.js dengan nama file`ses_sendemail.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk meneruskan nilai parameter yang menentukan email yang akan dikirim, termasuk alamat pengirim dan penerima, subjek, dan badan email dalam format teks biasa dan HTML, ke `SendEmailCommand` metode kelas `SES` klien. Untuk memanggil `SendEmailCommand` metode, panggil objek layanan Amazon SES, meneruskan parameter. 

**catatan**  
Contoh ini mengimpor dan menggunakan klien paket AWS Service V3 yang diperlukan, perintah V3, dan menggunakan `send` metode dalam sebuah pola. async/await Anda dapat membuat contoh ini menggunakan perintah V2 sebagai gantinya dengan membuat beberapa perubahan kecil. Lihat perinciannya di [Menggunakan perintah v3](migrating.md#using_v3_commands).

**catatan**  
Ganti *toAddress* dengan alamat untuk mengirim email ke, dan *fromAddress* dengan alamat email untuk mengirim email dari.

```
import { SendEmailCommand } from "@aws-sdk/client-ses";
import { sesClient } from "./libs/sesClient.js";

const createSendEmailCommand = (toAddress, fromAddress) => {
  return new SendEmailCommand({
    Destination: {
      /* required */
      CcAddresses: [
        /* more items */
      ],
      ToAddresses: [
        toAddress,
        /* more To-email addresses */
      ],
    },
    Message: {
      /* required */
      Body: {
        /* required */
        Html: {
          Charset: "UTF-8",
          Data: "HTML_FORMAT_BODY",
        },
        Text: {
          Charset: "UTF-8",
          Data: "TEXT_FORMAT_BODY",
        },
      },
      Subject: {
        Charset: "UTF-8",
        Data: "EMAIL_SUBJECT",
      },
    },
    Source: fromAddress,
    ReplyToAddresses: [
      /* more items */
    ],
  });
};

const run = async () => {
  const sendEmailCommand = createSendEmailCommand(
    "recipient@example.com",
    "sender@example.com",
  );

  try {
    return await sesClient.send(sendEmailCommand);
  } catch (caught) {
    if (caught instanceof Error && caught.name === "MessageRejected") {
      /** @type { import('@aws-sdk/client-ses').MessageRejected} */
      const messageRejectedError = caught;
      return messageRejectedError;
    }
    throw caught;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt. Email diantrian untuk dikirim oleh Amazon SES.

```
node ses_sendemail.js 
```

Kode contoh ini dapat [ditemukan di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_sendemail.js). 

## Mengirim email menggunakan template
<a name="ses-examples-sendtemplatedemail"></a>

Dalam contoh ini, gunakan modul Node.js untuk mengirim email dengan Amazon SES. Buat modul Node.js dengan nama file`ses_sendtemplatedemail.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan.

Buat objek untuk meneruskan nilai parameter yang menentukan email yang akan dikirim, termasuk alamat pengirim dan penerima, subjek, badan email dalam format teks biasa dan HTML, ke `SendTemplatedEmailCommand` metode kelas `SES` klien. Untuk memanggil `SendTemplatedEmailCommand` metode, panggil objek layanan klien Amazon SES, meneruskan parameter. 

**catatan**  
Contoh ini mengimpor dan menggunakan klien paket AWS Service V3 yang diperlukan, perintah V3, dan menggunakan `send` metode dalam sebuah pola. async/await Anda dapat membuat contoh ini menggunakan perintah V2 sebagai gantinya dengan membuat beberapa perubahan kecil. Lihat perinciannya di [Menggunakan perintah v3](migrating.md#using_v3_commands).

**catatan**  
Ganti *REGION* dengan AWS Wilayah Anda, *USER* dengan nama dan alamat email untuk mengirim email ke, *VERIFIED\$1EMAIL* dengan alamat email untuk mengirim email dari, dan *TEMPLATE\$1NAME* dengan nama template.

```
import { SendTemplatedEmailCommand } from "@aws-sdk/client-ses";
import {
  getUniqueName,
  postfix,
} from "@aws-doc-sdk-examples/lib/utils/util-string.js";
import { sesClient } from "./libs/sesClient.js";

/**
 * Replace this with the name of an existing template.
 */
const TEMPLATE_NAME = getUniqueName("ReminderTemplate");

/**
 * Replace these with existing verified emails.
 */
const VERIFIED_EMAIL = postfix(getUniqueName("Bilbo"), "@example.com");

const USER = { firstName: "Bilbo", emailAddress: VERIFIED_EMAIL };

/**
 *
 * @param { { emailAddress: string, firstName: string } } user
 * @param { string } templateName - The name of an existing template in Amazon SES.
 * @returns { SendTemplatedEmailCommand }
 */
const createReminderEmailCommand = (user, templateName) => {
  return new SendTemplatedEmailCommand({
    /**
     * Here's an example of how a template would be replaced with user data:
     * Template: <h1>Hello {{contact.firstName}},</h1><p>Don't forget about the party gifts!</p>
     * Destination: <h1>Hello Bilbo,</h1><p>Don't forget about the party gifts!</p>
     */
    Destination: { ToAddresses: [user.emailAddress] },
    TemplateData: JSON.stringify({ contact: { firstName: user.firstName } }),
    Source: VERIFIED_EMAIL,
    Template: templateName,
  });
};

const run = async () => {
  const sendReminderEmailCommand = createReminderEmailCommand(
    USER,
    TEMPLATE_NAME,
  );
  try {
    return await sesClient.send(sendReminderEmailCommand);
  } catch (caught) {
    if (caught instanceof Error && caught.name === "MessageRejected") {
      /** @type { import('@aws-sdk/client-ses').MessageRejected} */
      const messageRejectedError = caught;
      return messageRejectedError;
    }
    throw caught;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt. Email diantrian untuk dikirim oleh Amazon SES.

```
node ses_sendtemplatedemail.js 
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_sendtemplatedemail.js).

## Mengirim email massal menggunakan template
<a name="ses-examples-sendbulktemplatedemail"></a>

Dalam contoh ini, gunakan modul Node.js untuk mengirim email dengan Amazon SES. 

Buat `libs` direktori, dan buat modul Node.js dengan nama file`sesClient.js`. Salin dan tempel kode di bawah ini ke dalamnya, yang membuat objek klien Amazon SES. Ganti *REGION* dengan AWS wilayah Anda.

```
import { SESClient } from "@aws-sdk/client-ses";
// Set the AWS Region.
const REGION = "us-east-1";
// Credentials are automatically resolved using the AWS SDK credential provider chain.
// For more information, see https://docs.aws.amazon.com/sdk-for-javascript/v3/developer-guide/setting-credentials-node.html
// Create SES service object.
const sesClient = new SESClient({ region: REGION });
export { sesClient };
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/libs/sesClient.js).

Buat modul Node.js dengan nama file`ses_sendbulktemplatedemail.js`. Konfigurasikan SDK seperti yang ditunjukkan sebelumnya, termasuk menginstal klien dan paket yang diperlukan. 

Buat objek untuk meneruskan nilai parameter yang menentukan email yang akan dikirim, termasuk alamat pengirim dan penerima, subjek, dan badan email dalam format teks biasa dan HTML, ke `SendBulkTemplatedEmailCommand` metode kelas `SES` klien. Untuk memanggil `SendBulkTemplatedEmailCommand` metode, panggil objek layanan Amazon SES, meneruskan parameter. 

**catatan**  
Contoh ini mengimpor dan menggunakan klien paket AWS Service V3 yang diperlukan, perintah V3, dan menggunakan `send` metode dalam sebuah pola. async/await Anda dapat membuat contoh ini menggunakan perintah V2 sebagai gantinya dengan membuat beberapa perubahan kecil. Lihat perinciannya di [Menggunakan perintah v3](migrating.md#using_v3_commands).

**catatan**  
Ganti *USERS* dengan nama dan alamat email untuk mengirim email ke, *VERIFIED\$1EMAIL\$11* dengan alamat email untuk mengirim email dari, dan *TEMPLATE\$1NAME* dengan nama template.

```
import { SendBulkTemplatedEmailCommand } from "@aws-sdk/client-ses";
import {
  getUniqueName,
  postfix,
} from "@aws-doc-sdk-examples/lib/utils/util-string.js";
import { sesClient } from "./libs/sesClient.js";

/**
 * Replace this with the name of an existing template.
 */
const TEMPLATE_NAME = getUniqueName("ReminderTemplate");

/**
 * Replace these with existing verified emails.
 */
const VERIFIED_EMAIL_1 = postfix(getUniqueName("Bilbo"), "@example.com");
const VERIFIED_EMAIL_2 = postfix(getUniqueName("Frodo"), "@example.com");

const USERS = [
  { firstName: "Bilbo", emailAddress: VERIFIED_EMAIL_1 },
  { firstName: "Frodo", emailAddress: VERIFIED_EMAIL_2 },
];

/**
 *
 * @param { { emailAddress: string, firstName: string }[] } users
 * @param { string } templateName the name of an existing template in SES
 * @returns { SendBulkTemplatedEmailCommand }
 */
const createBulkReminderEmailCommand = (users, templateName) => {
  return new SendBulkTemplatedEmailCommand({
    /**
     * Each 'Destination' uses a corresponding set of replacement data. We can map each user
     * to a 'Destination' and provide user specific replacement data to create personalized emails.
     *
     * Here's an example of how a template would be replaced with user data:
     * Template: <h1>Hello {{name}},</h1><p>Don't forget about the party gifts!</p>
     * Destination 1: <h1>Hello Bilbo,</h1><p>Don't forget about the party gifts!</p>
     * Destination 2: <h1>Hello Frodo,</h1><p>Don't forget about the party gifts!</p>
     */
    Destinations: users.map((user) => ({
      Destination: { ToAddresses: [user.emailAddress] },
      ReplacementTemplateData: JSON.stringify({ name: user.firstName }),
    })),
    DefaultTemplateData: JSON.stringify({ name: "Shireling" }),
    Source: VERIFIED_EMAIL_1,
    Template: templateName,
  });
};

const run = async () => {
  const sendBulkTemplateEmailCommand = createBulkReminderEmailCommand(
    USERS,
    TEMPLATE_NAME,
  );
  try {
    return await sesClient.send(sendBulkTemplateEmailCommand);
  } catch (caught) {
    if (caught instanceof Error && caught.name === "MessageRejected") {
      /** @type { import('@aws-sdk/client-ses').MessageRejected} */
      const messageRejectedError = caught;
      return messageRejectedError;
    }
    throw caught;
  }
};
```

Untuk menjalankan contoh, masukkan yang berikut ini di command prompt. Email diantrian untuk dikirim oleh Amazon SES.

```
node ses_sendbulktemplatedemail.js
```

Kode contoh ini dapat ditemukan [di sini GitHub](https://github.com/awsdocs/aws-doc-sdk-examples/blob/main/javascriptv3/example_code/ses/src/ses_sendbulktemplatedemail.js). 