質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

1回答

1456閲覧

AWS Lambda & SESで、大量メール送信を行う際互いのメールアドレスが分からずかつ宛先に各個別のメールアドレスが記載されるようにするには?

halohalolin

総合スコア46

AWS Lambda

AWS Lambdaは、クラウド上でアプリを実行できるコンピューティングサービス。サーバーのプロビジョニングや管理を要せず複数のイベントに対してコードを実行します。カスタムロジック用いた他AWSサービスの拡張やAWSの規模やパフォーマンスを用いたバックエンドサービスを作成できます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2023/04/11 06:48

編集2023/04/11 08:53

実現したいこと

AWSのLambdaとSESを用いて以下の条件で大量にメールを送りたいです。

  • 受信者から他送信先メールアドレスが見えてはならない。
  • 宛先に自分のメールアドレスが記載されるようにしてほしい。

前提

Lambdaより登録済みメールアドレスへ同じ内容のメールを大量に送りたいです。
言語は、Node.jsです。
また受信者がメールを開いた際、宛先にはそれぞれ開いた受信者自身のメールアドレスが記載されるようにしたいです。
できるだけ高速に送りたいので、一件ずつSendEmailCommandよりDestinationのToAddressesで送る方法は避けたいです。
どのように実装すればよいでしょうか?

発生している問題・エラーメッセージ

なし

該当のソースコード

Node.js

1/** 2 * メール送信コマンド 3 * @param {string[]} toAddress 送信先 4 * @param {string} fromAddress 送信元 5 * @param {string[]} replyToAddresses 返信先 6 * @param {string} subject 件名 7 * @param {string} body 本文 8 * @returns sesClient.sendへ渡す値 9 */ 10const createSendEmailCommand = (toAddress, fromAddress, replyToAddresses, subject, body) => { 11 return new SendEmailCommand({ 12 Destination: { 13 ToAddresses: [], 14 BccAddresses: toAddress 15 }, 16 Message: { 17 Body: { 18 Text: { 19 Charset: 'UTF-8', 20 Data: formatText(body) 21 } 22 }, 23 Subject: { 24 Charset: 'UTF-8', 25 Data: formatText(subject) 26 }, 27 }, 28 ReplyToAddresses: replyToAddresses, 29 Source: fromAddress 30 }); 31};

試したこと

DestinationのBccAddressesで、全てのメールアドレスを50件ずつ記載する実装をしたのですが、その場合、宛先が空欄になってしまい、迷惑メールへ送られやすくなることが分かり悩んでいます。

以上よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mike2mike4

2023/04/11 09:28

データベースからアドレス1個づつ取りだして、for文で宛先設定すればいいんじゃないの?
halohalolin

2023/04/11 14:25

mike2mike4さん 前提をご確認下さい。
guest

回答1

0

ベストアンサー

AWS SDK JS 版は普段使わないので外していたら申し訳ないです。

Bulk 系で送信するといいかなというところで以下をお試ししていただくと良さそうに思います。
https://docs.aws.amazon.com/AWSJavaScriptSDK/v3/latest/clients/client-sesv2/classes/sendbulkemailcommand.html

送信まわりは制約が色々あるのでこちら↓も考慮しつつ設計することになる認識です。
https://docs.aws.amazon.com/ses/latest/dg/troubleshoot-throughput-problems.html
https://docs.aws.amazon.com/ses/latest/dg/manage-sending-quotas.html

なお、経験上のお話としては、SES はレピュテーションリスク高めの配信元になるため、レピュテーションリスクを低く保てる SendGrid 等を使うことが多い印象はあります〜(実は時代が進んでそんなことはないよ〜という話もありえますが〜参考まで〜)

投稿2023/04/11 15:55

編集2023/04/11 15:58
yagihiro

総合スコア73

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

halohalolin

2023/04/12 08:08

yagihiroさんありがとうございます。 まだ不慣れなので手間が増えるBulk系送信は避けていたのですが、検討します。 ただリンク先の記事を読んでいるのですが「互いのメールアドレスが分からずかつ宛先に各個別のメールアドレスが記載されるようにするには?」に対する方法が読み取れませんでした。 もしアドバイスがありましたらよろしくお願いします。
yagihiro

2023/04/12 08:50

> ただリンク先の記事を読んでいるのですが「互いのメールアドレスが分からずかつ宛先に各個別のメールアドレスが記載されるようにするには?」に対する方法が読み取れませんでした。 こちらは BulkEmailEntries に送信情報をまとめたオブジェクト群(1API呼び出しあたり50件まで格納可能)を渡すことで上記の課題をクリアできるはずです。 JS で近しい実装をしている、参考になりそうな記事として以下をみつけましたのでご参考まで。 https://dev.classmethod.jp/articles/bulk-email-ses-lambda/
halohalolin

2023/04/12 10:15

yagihiroさんありがとうございます。 sendBulkTemplatedEmailにおいて、Destinationsに最大50件の個別Destination.ToAddressesを指定することができる 個別なので受信者から他へ送信したメールアドレスは見えないし、Toなので宛先が記載されている状態で送ることができる・・・と理解しました。 これでできるかどうか後で試してみます、ありがとうございます!
halohalolin

2023/04/13 09:48

yagihiroさんありがとうございました。 紹介いただいたページはAWS SDK v2用のコードでしたのでAWS SDK v3用に書き換える必要がありましたが、何とか実装することができました!
yagihiro

2023/04/13 10:48

お〜よかったです〜!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問