cakephp3とmysqlで大量メール送信の設計
解決済
回答 3
投稿
- 評価
- クリップ 0
- VIEW 2,138
cakePHPで大量メール送信を時間指定付で行いたいと考えています。
社内連絡システム、特定のグループが使う連絡システムで、送信時間の指定付機能を実装したいと考えています。
質問
- 質問1:未来の時間を検知し、その時間になれば、メールが送られるという仕組みはどのように作られているのでしょうか。シェルをcakePHPで扱うことは可能でしょうか。調べる方向性を教えてください。メールのスプールを時間で管理するということは可能でしょうか。
- 質問2:時間指定なし(即時)でも時間指定ありでも、大量送信の上限は何件以上になれば、分割して送りたいと設計されますでしょうか?サーバのスペックにもよるとは思いますが、5000件ぐらいまでなら一括して送っても問題ないような気もしますがどうでしょうか。
-
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
クリップを取り消します
-
良い質問の評価を上げる
以下のような質問は評価を上げましょう
- 質問内容が明確
- 自分も答えを知りたい
- 質問者以外のユーザにも役立つ
評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。
質問の評価を上げたことを取り消します
-
評価を下げられる数の上限に達しました
評価を下げることができません
- 1日5回まで評価を下げられます
- 1日に1ユーザに対して2回まで評価を下げられます
質問の評価を下げる
teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。
- プログラミングに関係のない質問
- やってほしいことだけを記載した丸投げの質問
- 問題・課題が含まれていない質問
- 意図的に内容が抹消された質問
- 過去に投稿した質問と同じ内容の質問
- 広告と受け取られるような投稿
評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。
質問の評価を下げたことを取り消します
この機能は開放されていません
評価を下げる条件を満たしてません
質問の評価を下げる機能の利用条件
この機能を利用するためには、以下の事項を行う必要があります。
- 質問回答など一定の行動
-
メールアドレスの認証
メールアドレスの認証
-
質問評価に関するヘルプページの閲覧
質問評価に関するヘルプページの閲覧
+2
質問2について、経験則で、別観点から・・。
>大量送信の上限は何件以上になれば
自分から送信する側のプロバイダについて言及されていますが、
同様に受け取り側のプロバイダ(メール送信先)でも
スパム扱いへの考慮が必要です。
例えば受け取りの相手先が携帯ドメイン(docomoやau等)である場合に、
20秒間あたり、30件以上送るとスパムメール扱いで
拒絶される時代がありました。
ちなみに今は、どのくらいの件数を送信したらスパム扱いされるか、
のガイドラインは明示されていませんが、
大量に送ると迷惑メール扱いになります。
gmailの場合でも特定の送信先から大量に送ると自動で
迷惑メールフォルダに分別されます。
ゆえに、「送信したいメールがあれば、ただただ送る」ような物は
あまり好ましくなく、「秒間あたり何件までのメールを送信する」ような
タイマー付きのものを作成する必要があります。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
checkベストアンサー
+1
CakePHPにはシェル用のクラスが実装されているので、そこにコードを記述すればよいでしょう。
https://book.cakephp.org/3.0/ja/console-and-shells.html
後はcronなどで定期的に実行させて、送信する必要があれば送信処理を行うというようなことをすれば一応実現は可能です。
即時送信の場合も、2,3通なら問題ありませんが、たくさんの場合は送信自体に時間がかかるので非同期でシェル上で行うような形で設計することをお勧めします。
ただ、無計画に大量にメール送信するとスパムとみなされてしまう場合が多いと思います。
予算が許せばメール配信サービスなどを利用してそこ経由で送るような形にしたほうが安全です。
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
0
予約するならat、定期処理ならcron
ispとそれなりの契約をしていないと、
毎時3~400件もだせばりっぱなスパム業者とみなされ
ブラックリストにはいる可能性はあります
投稿
-
回答の評価を上げる
以下のような回答は評価を上げましょう
- 正しい回答
- わかりやすい回答
- ためになる回答
評価が高い回答ほどページの上位に表示されます。
-
回答の評価を下げる
下記のような回答は推奨されていません。
- 間違っている回答
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。
15分調べてもわからないことは、teratailで質問しよう!
- ただいまの回答率 88.10%
- 質問をまとめることで、思考を整理して素早く解決
- テンプレート機能で、簡単に質問をまとめられる
2017/02/23 14:05
昨今のスパムメール事情はどうなのでしょうかね。
メールサーバの設定にも色々とありそうです。
何かしらまとまっているページが欲しいものです。
タイマー付きの場合、20秒20件の場合、1500件おくるのに25分かかります。
少なくとも1500人の場合5~10分程度にしたいのですが・・・。
色々と調査中です。ありがとうございます。
2017/02/23 14:28
ほぼなかったのですが、送信時、ウィルスチェック系サーバーが
メールをチェックしていたためパンクして、
やむなく送信を分速600件までに制限する、という事件がありました。
#メールのチェックについては開示されていなかったので・・。
受け取り側については、制限のあるドメインと、それ以外に分類して、
それらの宛先ドメイン単位で一斉にスレッドを立て、
秒あたりの件数を制御しました。
(30秒間20通の古典と、無制限(60秒当たり120通程度。))
各スレッドから、ばらばらと送信する感じで、送信バッチだけならば、
分速2500通くらいまでは送信できました。
(・・が、上述のとおり、600通まで制限することになりました。)
あとsendMailサーバにも遅延が発生して、サーバ増強が必要でした。
そのあたり、インフラ系についての検討や実測も、必要やもしれません。