web-dev-qa-db-ja.com

ルールに基づいて、どのようにして多数のDrupalユーザーにメールを送信しますか?

HTMLメール(MIMEモジュール)を送信するためのスケジュールされたルール(スケジュール、ルールモジュール)があり、ビューを使用して電子メールアドレスをリストします(ビュールール)。

私はこれを数人のユーザー(私のサイトのデータベース内のすべてのユーザー)に基づいてテストし、すべてが期待どおりに機能しました。メールの数を1400に増やしたところ、約半分のユーザーが何度も何度もメールを受信して​​いることがわかりました。

また、CRONを手動で実行すると、ページがタイムアウトすることにも気付きました。

ログに記録されたエラーは表示されませんが、これらはクリアされた可能性があります。

これが発生している理由を誰かが説明できますか?ユーザー数が増加する前にすべてが機能していたと私は確信しています。

CRONタスクがタイムアウト/エラーになった場合、成功するまでページヒットごとに繰り返されますか?

2
user5681

Mail Chimp module を使用して MailChimp と統合します。これは人気のあるメール外部配信サービスです。

このモジュールを使用すると、Webサイトのユーザーまたは訪問者は、どのメールリストをオン(またはオフ)にするかを簡単に制御でき、サイトからMailChimpメールキャンペーンを生成して送信できます。また、あなたとユーザーはメールの履歴を表示できます。それらはMailChimpから送信されました。より一般的には、メール配信を効率化し、ユーザーのメール受信と制御をシンプルかつ正確にすることを目指しています。 MailChimpの継続的なスポンサーのおかげで、このモジュールは積極的に維持され、定期的に機能が追加されます。

テスト済みの実用的なソリューションは http://azadnegar.com にあります。

0
Reza Shadman

Mandrill モジュール( Mandrill サービスと組み合わせて)を使用すると、トランザクションメール(および理論的にはバルクメール)を非常に迅速に送信できます。組み込みのキュー機能があり、送信メールをcronキューに追加します。

Mandrillサービスでは、同時に多くのメールを送信する前に、合理的な送信者評価を構築する必要があることに注意してください。1時間あたりの制限は自動的に増加します。そしてもちろん お金がかかる可能性があります

キューメール モジュールは、独自のキューを持つMandrillまたは他のモジュールを実行したくない場合に、送信メールをキューに入れるための汎用ソリューションです。

Cronについて:Drupalの組み込みcronは、すべての繰り返しタスクを一度に実行するようトリガーします。つまり、複雑なサイトでは非常に遅くなる可能性があります。多くのcronタスクはそれほど頻繁に実行する必要はありませんが、それらの多くは頻繁に実行されるべきではありません(たとえば、システムcronはキャッシュをクリアしますが、これによりサイトが本当に遅くなる可能性があります)。

したがって、 Elysia Cron モジュールを使用してcronジョブをより効率的に管理できます。これにより、タスクを分離して、高速で頻繁に実行する必要のあるタスク(Mandrill cronなど)を毎分実行できるようになります。 、遅いもの(システムcronなど)は毎週実行されます。

ltimate Cron モジュールはElysia Cronの代替です-私は最近それを使用していないので、うまく機能するかどうかはわかりません。

2
pjcdawkins

メールが本質的にトランザクション/トリガーである場合、 Pepipost が最適です。

Pepipostを使用してDrupalからメールを送信するには、必要に応じて、SMTP認証サポートモジュールまたはSwiftメーラーモジュールを使用できます。

参照: http://support.pepipost.com/knowledge_base/topics/drupal

0
Sachin

電子メールの送信が遅い。いつもだった、いつもそうだ。さらに、 アンチスパム技術は故意にさらに遅くします 。大量のメールを1つの巨大なパッケージで送信しないように特別に設計されています。たとえそのようなメールが正当なものであったとしても、サーバーを受信するための大きな負担となり、DoS攻撃のように機能する可能性があります。

タイムアウトはサーバーのエラーログにのみ記録されます。本来、Drupalのスクリプトにログを記録することはできません。これは、Drupalのスクリプトが実行されていないため、何かができないためです。そのため、ウォッチドッグレポートに記録されたものが表示されません。

1つの解決策は、他の人を雇って問題を解決することです。 MailChimp はDrupalと簡単に統合でき、少なくとも現時点では、最大2000人の受信者に無料で提供されます。ライバルも多いと思います。

他の方法は、送信サーバーをローカルにセットアップすることです。次に、大量送信防止方法をオフにし、localhostからの接続のみを受け入れるようにします。 SMTP Authentication Support を使用して、すべてのメールをプッシュします。そうすれば、スクリプトがより速く、うまくいけばタイムアウトなしで動作するはずです。

Batch APIを使用してメールを送信することはできますが、多くのカスタムコーディングが必要であり、メールは通常のユーザーによってトリガーされません-通常のユーザーに「アクションがトリガーされた大量メール送信、451人のユーザーへの送信」を表示させたくない場合彼がブラウザを閉じずに辛抱強く待つことを願っています。

0
Mołot