ホームページ  >  記事  >  ウェブフロントエンド  >  AWS SES を使用した電子メールの送信: 包括的なガイド

AWS SES を使用した電子メールの送信: 包括的なガイド

Susan Sarandon
Susan Sarandonオリジナル
2024-10-18 18:41:02459ブラウズ

Sending Emails with AWS SES: A Comprehensive Guide

AWS Simple Email Service (SES) は、トランザクションメッセージ、マーケティングキャンペーン、自動通知など、メールを安全に送信できる強力でコスト効率の高いソリューションです。

このブログ投稿では、AWS SES を使用して E メールを送信する方法を検討し、HTML テンプレート、添付ファイル、さらにはカレンダーイベントの送信など、さまざまなユースケースを取り上げます。すぐに始められるよう、実践的な例を見ていきます。


目次

  1. AWS SES とは何ですか?
  2. AWS SES のセットアップ
  3. 簡単なメールを送信する
  4. HTML メールの送信
  5. 添付ファイル付きメールの送信
  6. カレンダーの招待状を送信します
  7. ベストプラクティス
  8. 結論

AWS SESとは何ですか?

AWS Simple Email Service (SES) は、デジタルマーケターやアプリケーション開発者がマーケティング、通知、トランザクションに関する電子メールを送信できるように設計されたクラウドベースの電子メール送信サービスです。これは、あらゆる規模の企業にとって、信頼性が高く、スケーラブルで、コスト効率の高いサービスです。

主な機能:

  • スケーラビリティ: 大量の電子メールを簡単に処理します。
  • 配信性: AWS の評判による高い配信率。
  • 費用対効果の高い: 従量課金制の料金モデル。
  • セキュリティ: DKIM や SPF などの認証メカニズムをサポートします。

AWS SES のセットアップ

メールの送信に入る前に、アカウントに AWS SES を設定しましょう。

ステップ 1: 電子メール アドレスまたはドメインを確認する

AWS SES では、使用する予定の E メールアドレスまたはドメインを確認する必要があります。

  1. メールアドレスを確認してください:
  • AWS SES コンソールに移動します。
  • ID 管理メール アドレス に移動します。
  • 新しいメール アドレスを確認をクリックします。
  • メール アドレスを入力し、このメール アドレスを確認する をクリックします。
  • 受信トレイを確認し、AWS からのメールにある確認リンクをクリックします。
  1. ドメインを確認します:
  • Identity Management の下の ドメイン に移動します。
  • 新しいドメインを確認をクリックします。
  • ドメイン名を入力してください。
  • AWS は DNS レコードを提供します。これらをドメインの DNS 設定に追加します。

ステップ 2: 実稼働アクセスをリクエストする

デフォルトでは、新しい AWS アカウントは サンドボックス 環境にあり、メール送信機能が制限されます。

  • SES 送信制限 ページに移動します。
  • 送信制限の引き上げをリクエストをクリックします。
  • サンドボックスから移動するには、リクエスト フォームに記入してください。

ステップ 3: AWS 認証情報を設定する

プログラムで SES と対話するには、AWS アクセス キーが必要です。

  • AWS IAM コンソールに移動します。
  • プログラムによるアクセスを持つ新しいユーザーを作成します。
  • AmazonSESFullAccess ポリシーをアタッチします。
  • アクセス キー IDシークレット アクセス キー を保存します。

簡単なメールを送信する

AWS SDK for Node.js を使用して、単純なプレーンテキストのメールを送信することから始めましょう。

前提条件

  • Node.js がマシンにインストールされています。
  • AWS SDK for Node.js (aws-sdk) がインストールされています。

コード例

const AWS = require('aws-sdk');

// Configure AWS SDK
AWS.config.update({
  accessKeyId: 'YOUR_ACCESS_KEY_ID',
  secretAccessKey: 'YOUR_SECRET_ACCESS_KEY',
  region: 'us-east-1', // Replace with your SES region
});

const ses = new AWS.SES();

const params = {
  Source: 'sender@example.com',
  Destination: {
    ToAddresses: ['recipient@example.com'],
  },
  Message: {
    Subject: {
      Data: 'Test Email from AWS SES',
    },
    Body: {
      Text: {
        Data: 'Hello, this is a test email sent using AWS SES!',
      },
    },
  },
};

ses.sendEmail(params, (err, data) => {
  if (err) {
    console.error('Error sending email', err);
  } else {
    console.log('Email sent successfully', data);
  }
});

説明:

  • ソース: 送信元の確認済み電子メール アドレス。
  • 宛先: 受信者の電子メール アドレス。
  • メッセージ: 電子メールの件名と本文が含まれます。

HTMLメールの送信

次に、HTML コンテンツを含む電子メールを送信して、視覚的にさらに魅力的なものにしてみましょう。

コード例

const params = {
  Source: 'sender@example.com',
  Destination: {
    ToAddresses: ['recipient@example.com'],
  },
  Message: {
    Subject: {
      Data: 'Welcome to Our Service!',
    },
    Body: {
      Html: {
        Data: `
          <html>
            <body>
              <h1>Welcome!</h1>
              <p>We're glad to have you on board.</p>
            </body>
          </html>
        `,
      },
    },
  },
};

ses.sendEmail(params, (err, data) => {
  if (err) {
    console.error('Error sending HTML email', err);
  } else {
    console.log('HTML email sent successfully', data);
  }
});

ヒント:

  • CSS スタイルをインラインに含めたり、基本的なスタイルを使用して電子メール クライアント間の互換性を確保したりできます。
  • フォールバックとして常にプレーンテキスト バージョンを含めてください。

添付ファイル付きメールの送信

添付ファイル付きの電子メールを送信するには、sendEmail の代わりに sendRawEmail メソッドを使用します。

コード例

const fs = require('fs');
const path = require('path');
const AWS = require('aws-sdk');
const ses = new AWS.SES();

// Read the attachment file
const filePath = path.join(__dirname, 'attachment.pdf');
const fileContent = fs.readFileSync(filePath);

// Define the email parameters
const params = {
  RawMessage: {
    Data: createRawEmail(),
  },
};

function createRawEmail() {
  const boundary = '----=_Part_0_123456789.123456789';

  let rawEmail = [
    `From: sender@example.com`,
    `To: recipient@example.com`,
    `Subject: Email with Attachment`,
    `MIME-Version: 1.0`,
    `Content-Type: multipart/mixed; boundary="${boundary}"`,
    ``,
    `--${boundary}`,
    `Content-Type: text/plain; charset=UTF-8`,
    `Content-Transfer-Encoding: 7bit`,
    ``,
    `Hello, please find the attached document.`,
    `--${boundary}`,
    `Content-Type: application/pdf; name="attachment.pdf"`,
    `Content-Description: attachment.pdf`,
    `Content-Disposition: attachment; filename="attachment.pdf";`,
    `Content-Transfer-Encoding: base64`,
    ``,
    fileContent.toString('base64'),
    `--${boundary}--`,
  ].join('\n');

  return rawEmail;
}

ses.sendRawEmail(params, (err, data) => {
  if (err) {
    console.error('Error sending email with attachment', err);
  } else {
    console.log('Email with attachment sent successfully', data);
  }
});

説明:

  • マルチパート MIME メッセージ: 添付ファイルを含めるために、MIME 境界を使用して生の電子メールを構築します。
  • Base64 エンコード: 添付ファイルは Base64 エンコードである必要があります。
  • コンテンツ ヘッダー: 電子メール クライアントが添付ファイルを正しく解釈するには、適切なヘッダーが必要です。

カレンダーの招待状を送信する

カレンダー イベントを送信するには、.ics ファイルを添付ファイルとして含めます。

コード例

function createCalendarEvent() {
  const event = [
    'BEGIN:VCALENDAR',
    'VERSION:2.0',
    'BEGIN:VEVENT',
    'DTSTAMP:20231016T090000Z',
    'DTSTART:20231020T100000Z',
    'DTEND:20231020T110000Z',
    'SUMMARY:Meeting Invitation',
    'DESCRIPTION:Discuss project updates',
    'LOCATION:Conference Room',
    'END:VEVENT',
    'END:VCALENDAR',
  ].join('\n');

  return Buffer.from(event).toString('base64');
}

function createRawEmail() {
  const boundary = '----=_Part_0_123456789.123456789';

  let rawEmail = [
    `From: sender@example.com`,
    `To: recipient@example.com`,
    `Subject: Meeting Invitation`,
    `MIME-Version: 1.0`,
    `Content-Type: multipart/mixed; boundary="${boundary}"`,
    ``,
    `--${boundary}`,
    `Content-Type: text/plain; charset=UTF-8`,
    `Content-Transfer-Encoding: 7bit`,
    ``,
    `Hello, you're invited to a meeting.`,
    `--${boundary}`,
    `Content-Type: text/calendar; method=REQUEST; name="invite.ics"`,
    `Content-Transfer-Encoding: base64`,
    `Content-Disposition: attachment; filename="invite.ics"`,
    ``,
    createCalendarEvent(),
    `--${boundary}--`,
  ].join('\n');

  return rawEmail;
}

ses.sendRawEmail(params, (err, data) => {
  if (err) {
    console.error('Error sending calendar invite', err);
  } else {
    console.log('Calendar invite sent successfully', data);
  }
});

説明:

  • カレンダー イベント形式: iCalendar 形式を使用して .ics ファイル コンテンツを作成します。
  • Method=REQUEST: これが会議への招待状であることを示します。
  • 適切なヘッダー: カレンダー ファイルの Content-Type と Content-Disposition が正しいことを確認します。

ベストプラクティス

  • エラー処理: アプリケーションには常に堅牢なエラー処理を含めてください。
  • 電子メールの検証: 送信する前に電子メール アドレスが有効であることを確認します。
  • スロットリング: スロットルを回避するには、SES の送信制限に注意してください。
  • 購読解除リンク: 規制に準拠するために、マーケティング電子メールに購読解除オプションを含めます。
  • モニタリング: AWS CloudWatch を使用して、メール送信アクティビティをモニタリングします。
  • セキュリティ: AWS 認証情報を保護し、可能な場合は IAM ロールを使用します。

結論

AWS SES は、さまざまなメール送信ニーズに対応できる多用途のサービスです。単純な通知、リッチ HTML コンテンツを含むマーケティングメール、または添付ファイルやカレンダーイベントを含む複雑なメッセージを送信する場合でも、AWS SES が対応します。

このガイドに従うことで、次の方法をしっかりと理解できるようになります。

  • アカウントに AWS SES を設定します。
  • プレーンテキストおよび HTML メールを送信します。
  • メールに添付ファイルとカレンダーの招待状を含めます。

読んでいただきありがとうございます!ご質問や共有したいヒントがございましたら、お気軽に以下にコメントを残してください。コーディングを楽しんでください!

以上がAWS SES を使用した電子メールの送信: 包括的なガイドの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。