読者です 読者をやめる 読者になる 読者になる

mailgunのBatch sendingを使って複数のユーザーに同一メールを一括で送信する機能をGoで実装する

mailgunのBatch sendingという機能では同一のメールを複数ユーザーに一括で送信することが出来ます。

この記事ではGolangによる一括送信の機能について紹介します。

 

 具体的なコードは以下の通りです。 

 

gist1984d7f79032c8162b08c2ecaf6e2d6f

 

配列にあるメールアドレス群を"AddRecipient"でセットし、まとめて送信しています。

 

正確に言うと、まるっと投げられたメアド達はmailgunにエンキューされて勝手に捌いてくれるという仕様ですが、こちらのアプリケーション側でメアド毎に毎回リクエストを送る必要が無いので処理速度が速くなるというメリットがあります(特に何百万、何千万ものメールアドレスを抱えているのであれば速度が顕著に速くなります)。

 

注意点

1. Throttling(スロットリング)に注意する

(特にまだそこまでIPレピュテーションが高く無い状態やIPウォームアップを行っている状態においては)大量のメールアドレスが一気に送られるとISPにスロットリングをされたりソフトバウンスが帰ってくる事があるので間隔を持って送るなどの対応をしたほうが良いです。

 

2. 存在しなくなったメールアドレスなどは削除してクリーンな状態を保つ

存在しなくなったメールアドレスに送ってもハードバウンスとなりIPレピュテーションが下がる一方なので定期的に削除したほうが良いです。

 

 

参考

公式DocsにBatch sendingについて記載されています。 

User Manual — Mailgun API documentation

 

 mailgunのhelpページにも同様のソリューションが提示されています

help.mailgun.com