PHPで毎週100,000人のユーザーにメールを送信するにはどうすればよいですか?これには、次のプロバイダーを使用するサブスクライバーへのメールが含まれます。
- AOL
- Gmail
- ホットメール
- Yahoo
可能な限り、すべての電子メールが実際に配信されることが重要です。明らかに、従来の方法でメールを送信するだけでは、問題が発生するだけです。
これを簡単にするPHP用のライブラリはありますか?
PHPで毎週100,000人のユーザーにメールを送信するにはどうすればよいですか?これには、次のプロバイダーを使用するサブスクライバーへのメールが含まれます。
可能な限り、すべての電子メールが実際に配信されることが重要です。明らかに、従来の方法でメールを送信するだけでは、問題が発生するだけです。
これを簡単にするPHP用のライブラリはありますか?
簡単な答え:技術的には毎週10万通の電子メールを自分で送信することは可能ですが、最も簡単で簡単で最も安価な解決策は、これを専門の会社の1つにアウトソーシングすることです(私は「最も安い」と言いました。制限はありません。 DIYを試みるときにこれに没頭できる開発時間(したがってお金)の量)。
長い答え:絶対に自分でこれをやりたいと思ったら、傷ついた世界に備えてください(結局のところ、これは私たちが話している電子メール/電子メールです)。あなたは必要になるでしょう:
mail()
すること自体は十分に恐ろしいです)驚いたことに、それは簡単な部分でした。難しい部分は実際にそれを送信することです:
さらに、その法的な部分(さまざまな連邦、州、地方の法律、さらには米国外に送信した後のさまざまな法律のもつれ)を管理する必要があります(注:ジョーかどうかを確認する方法はありません) @ hotmail.comは、世界で最も厳しいスパム対策法のある国である南西エルボニアに住んでいます))。
私はこのヒドラのいくつかの頭を逃したとかなり確信しています-あなたはまだこれを自分でやりたいと思いますか?もしそうなら、別の波がありますが、今回は単に電子メールの送信に固有の厄介な問題です。(ご覧のとおり、SMTPはストアアンドフォワードプロトコルです。つまり、次のサーバーが最終的な受信者に少し近づくことを期待して、インターネット上の多くのSMTPサーバー間で電子メールがシャッフルされます。電子メールはSMTPサーバーに送信され、転送キューに入れられます。時間になると、指定されたドメインのSMTPサーバーに到達するまで、別のSMTPサーバーにさらに転送されます。この転送はすぐに発生する可能性があります。 、または数分、数時間、数日、またはまったくない。)したがって、次の問題が発生します。これらの問題のほとんどは、目的地だけでなく途中でも発生する可能性があります。
<blink>
ここではあなたの友達ではありませんし、そうでもありません<font color=...>
)そして、これをトラブルシューティングして解決するのはあなたの仕事になります(ヒント:ほとんどの場合、できません)。合法的なマスメールビジネスを運営している人々は、最終的にはそれを解決できないこと、そして彼らもそれを解決できないことを知っています-そして彼らは十分に研究され、文書化され、概説された理由を持っています(おそらくパワーポイントのプレゼンテーションとしてさえ) -上司が理解できるサウンドとクールなトランジションを完備)、これまで何百万回も説明しなければならなかったからです。さらに、実際に解決可能な問題については、彼らはそれらを解決する方法をよく知っています。
このすべての後で、あなたが落胆せず、それでもこれをやりたいのであれば、すぐに進んでください:これを行うためのより良い方法を見つけることさえ可能です。今後の道のりは簡単ではないことを知っておいてください。電子メールの送信は簡単で、配信するのは困難です。
人々はバルクメールの良いベンダーであるMailChimpを推薦しました。トランザクションメールの優れたベンダーをお探しの場合は、私がお手伝いできるかもしれません。
過去6か月間、私たちは4つの異なるSMTPベンダーを使用して、どれが最適かを判断することを目的としました。
これが私たちが見つけたものの要約です...
結論
SendGridは最高で、Postmarkが2位になりました。これら2つのいずれかで送信時間に躊躇することはありませんでした(場合によっては一度に数百通のメールを送信しました)。確かな機能セットがあれば、どちらも最高のROIを実現します。
これが私の大きなシステムの1つでPHPで最近行ったことです。
ユーザーはニュースレターのテキストを入力し、受信者を選択します(これにより、後で使用するために電子メールアドレスを取得するためのクエリが生成されます)。
ニュースレターのテキストと受信者のクエリを、*email_queue*という名前のmysqlテーブルの行に追加します。
cronジョブとして毎分実行される別のスクリプトを作成しました。SwiftMailerクラスを使用します。このスクリプトは単純に:
営業時間中に、優先度==0ですべてのメールを送信します
営業時間外に、優先度で他のメールを送信する
ホストの設定に応じて、アンチフラッドやスロットルなどの標準のswiftmailersプラグインを使用してスロットルを設定できるようになりました...
$mailer->registerPlugin(new Swift_Plugins_AntiFloodPlugin(50, 30));
と
$mailer->registerPlugin(new Swift_Plugins_ThrottlerPlugin( 100, Swift_Plugins_ThrottlerPlugin::MESSAGES_PER_MINUTE ));
などなど。
添付ファイルや他の多くの構成可能な設定を使用して、この擬似コードをはるかに超えて拡張しましたが、サーバーが電子メールを送信するように正しく設定されている限り、非常にうまく機能します。(おそらく共有ホスティングでは機能しませんが、理論的には機能するはずです...)Swiftmailerには設定さえあります
$message->setReturnPath
私は今、バウンスを追跡するために使用しています...
ハッピートレイル!(ハッピーメール?)