-146

PHPで毎週100,000人のユーザーにメールを送信するにはどうすればよいですか?これには、次のプロバイダーを使用するサブスクライバーへのメールが含まれます。

  • AOL
  • Gmail
  • ホットメール
  • Yahoo

可能な限り、すべての電子メールが実際に配信されることが重要です。明らかに、従来の方法でメールを送信するだけでは、問題が発生するだけです。

これを簡単にするPHP用のライブラリはありますか?

4

3 に答える 3

679

簡単な答え:技術的には毎週10万通の電子メールを自分で送信することは可能ですが、最も簡単で簡単で最も安価な解決策は、これを専門の会社の1つにアウトソーシングすることです(私「最も安い」と言いました。制限はありません。 DIYを試みるときにこれに没頭できる開発時間(したがってお金)の量)。

長い答え:絶対に自分でこれをやりたいと思ったら、傷ついた世界に備えてください(結局のところ、これは私たちが話している電子メール/電子メールです)。あなたは必要になるでしょう:

  • スパムではない電子メールコンテンツ(そうしないと、法的な影響でさえ、すべてのステップで追加の主要な障害に遭遇します)
  • さらに、コンテンツはスパムと簡単に区別できる必要があります。これは、場合によっては少し難しいかもしれません(特定の製薬会社は、スパムではブランド名が非常に一般的であるため、電子メールを放棄しなければならなかったと聞きました。 )。
  • 独自の構成可能なSMTPサーバー。100kの電子メールをダンプしても座屈しません(ここではISPのアップストリームサーバーでは不十分であり、ISPをひどく不幸にします。2つの専用ボックスを使用しました)
  • いくつかのメールラッパー(たとえば、PHPがあなたの選択の毒である場合はPhpMailer。PHPを使用mail()すること自体は十分に恐ろしいです)
  • ループで実行し、メールを作成してラッパーに渡す独自の送信者関数(アプリにメモリリークがある場合、PHPのメモリ制限に遭遇する可能性があることに注意してください。送信プロセスを定期的に、またはそれ以上にリサイクルする必要がある場合があります。 、「電子メールの作成」と「電子メールの送信」を完全に切り離します)

驚いたことに、それは簡単な部分でした。難しい部分は実際にそれを送信することです:

  • 一部のサーバーでは、近くに送信するメールが多すぎると禁止されるため、キューをシャッフルして監視する必要があります(たとえば、1つのメールをjoe@example.comに送信し、次に3つを他のドメインに送信し、次に別のメールをotheraddress@example.comに送信します。 )。
  • 正しいPTR、SPF、DKIMレコードが必要です
  • リモートサーバーのタイムアウト、誤って構成されたDNSレコード、およびその他のネットワーク機能の処理
  • 無効な電子メールの処理(そして、いいえ、正規表現はそのための間違ったツールです
  • 購読解除の処理(多くの正当なニュースレターは、1つのステップで購読を解除できず、代わりに「スパムとしてマーク」することを選択した多くの欲求不満のユーザーのためにスパムとして再分類されました-スパムフィルターは、特に大規模な電子メールプロバイダーで学習します)
  • バウンスと拒否の処理(「そのようなメールボックスはありませんojhn@example.com」、「メールボックスjohn@example.comがいっぱいです」)
  • ブラックリストへの登録とブラックリストからの削除の処理(確かに、スパムを送信していません。一部の受信者はそれほど確信が持てません。このような大規模なリストでは、どのような予防策を講じても、それ発生することがあります。 -悪意のある競合他社)は、あなたのメールをスパムとして誤って報告することさえあるかもしれません-それは起こります。平均して、ブラックリストから自分自身を削除するのに数週間かかります。)

さらに、その法的な部分(さまざまな連邦、州、地方の法律、さらには米国外に送信した後のさまざまな法律のもつれ)を管理する必要があります(注:ジョーかどうかを確認する方法はありません) @ hotmail.comは、世界で最も厳しいスパム対策法のある国である南西エルボニアに住んでいます))。

私はこのヒドラのいくつかの頭を逃したとかなり確信しています-あなたはまだこれを自分でやりたいと思いますか?もしそうなら、別の波がありますが、今回は単に電子メールの送信に固有の厄介な問題です。(ご覧のとおり、SMTPはストアアンドフォワードプロトコルです。つまり、次のサーバーが最終的な受信者に少し近づくことを期待して、インターネット上の多くのSMTPサーバー間で電子メールがシャッフルされます。電子メールはSMTPサーバーに送信され、転送キューに入れられます。時間になると、指定されたドメインのSMTPサーバーに到達するまで、別のSMTPサーバーにさらに転送されます。この転送はすぐに発生する可能性があります。 、または数分、数時間、数日、またはまったくない。)したがって、次の問題が発生します。これらの問題のほとんどは、目的地だけでなく途中でも発生する可能性があります。

  • リモートSMTPサーバーはSMTPサーバーと通信したくない
  • あなたのメールはスパムとしてマークされています(<blink>ここではあなたの友達ではありませんし、そうでもありません<font color=...>
  • メールは数日、場合によっては数週間遅れて配信されます(一般的な意見とは異なり、SMTPは、メッセージを将来配信するために最善を尽くすように設計されています。現在は配信されません)。
  • メールがまったく配信されない(ホップ#4の電子メールサーバーから送信済み、ホップ#5のサーバーからまだ送信されていない、現在メッセージを保持しているサーバーがクラッシュし、データが失われる)
  • あなたのメールは途中でいくつかのbraindeadサーバーによって壊されます(これはbase64エンコーディングでいくらか解決可能ですが、サイズが大きくなり、電子メールはより疑わしいように見えます)
  • あなたのメールは配信され、受信者はそれらを望んでいないようです(「私はこれにサインアップしなかったと確信しています、私は1年前にしたことを正確に覚えています」(もちろんあなたはそうします))
  • さまざまなバージョンのMicrosoftOutlookとそのインターネットメールの特別な処理を使用しているユーザー
  • ウィザードの見習いモード(自己強化の正のフィードバックループ-言い換えれば、返信としての自動メールへの返信としての自動メール...;あなたは本当にこれをオフにするものになりたくないので、あなたは自分自身でインターネットの半分を怒らせるでしょう)

そして、これをトラブルシューティングして解決するのはあなたの仕事になります(ヒント:ほとんどの場合、できません)。合法的なマスメールビジネスを運営している人々は、最終的にはそれを解決できないこと、そして彼らもそれを解決できないことを知っています-そして彼らは十分に研究され、文書化され、概説された理由を持っています(おそらくパワーポイントのプレゼンテーションとしてさえ) -上司が理解できるサウンドとクールなトランジションを完備)、これまで何百万回も説明しなければならなかったからです。さらに、実際に解決可能な問題については、彼らはそれらを解決する方法をよく知っています。

このすべての後で、あなたが落胆せず、それでもこれをやりたいのであれば、すぐに進んでください:これを行うためのより良い方法を見つけることさえ可能です。今後の道のりは簡単ではないことを知っておいてください。電子メールの送信は簡単で、配信するのは困難です。

于 2010-10-11T11:36:37.220 に答える
46

人々はバルクメールの良いベンダーであるMailChimpを推薦しました。トランザクションメールの優れたベンダーをお探しの場合は、私がお手伝いできるかもしれません。

過去6か月間、私たちは4つの異なるSMTPベンダーを使用して、どれが最適かを判断することを目的としました。

これが私たちが見つけたものの要約です...

AuthSMTP

  • 周りで一番安い
  • 分析/報告なし
  • オープン/クリックの追跡なし
  • 一部の送信で少しためらっていた

消印

  • 非常に安いですが、AuthSMTPほど安くはありません
  • 美しいcpanelですが、オープン/クリックの追跡はありません
  • 送信レベルのアクティビティ追跡。送信された単一の電子メールを開いて、その外観と配信データを確認できます。
  • APIを使用する必要があります。SMTPによる送信が最近導入されましたが、バグがあります。たとえば、件名の引用符( ")が削除されていることに気付きました。
  • 必要な添付ファイルを送信できません。承認されたファイルタイプのリストにあり、特定のサイズ未満である必要があります。(10 MBだと思います)
  • 名前/アドレスからのセットリストが必要です。

JangoSMTP

  • 他のものと比較して高価–場合によっては10倍以上
  • 醜いcpanelですが、メールレベルの詳細で開く/クリックの優れた追跡
  • 送信するときに、時々ためらっていました。2回、送信が配信されるまでに1時間かかりました
  • 差出人の名前/アドレスのセットリストが必要です。

SendGrid

  • AuthSMTPほど安くはありませんが、それでも非常に安いです。多くの顧客は、1日あたり200回の無料送信で存在できます。
  • まともなcpanelですが、オープン/クリックトラッキングに関する詳細はありません
  • 多くのAPIオプション。オプション(開く/クリック追跡など)は、電子メールごとにカスタム定義できます。受信(返信)メールは、HTTPエンドポイントに投稿できます。
  • 送信の躊躇は絶対にありません。送信されたすべての電子メールは、ほぼ即座に受信トレイに届きました。
  • 名前/住所から送信できます。

結論

SendGridは最高で、Postmarkが2位になりました。これら2つのいずれかで送信時間に躊躇することはありませんでした(場合によっては一度に数百通のメールを送信しました)。確かな機能セットがあれば、どちらも最高のROIを実現します。

于 2010-10-13T16:56:24.213 に答える
4

これが私の大きなシステムの1つでPHPで最近行ったことです。

  1. ユーザーはニュースレターのテキストを入力し、受信者を選択します(これにより、後で使用するために電子メールアドレスを取得するためのクエリが生成されます)。

  2. ニュースレターのテキストと受信者のクエリを、*email_queue*という名前のmysqlテーブルの行に追加します。

    • (テーブルemail_queueには、「to」、「subject」、「body」、「priority」の列があります)
  3. 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

私は今、バウンスを追跡するために使用しています...

ハッピートレイル!(ハッピーメール?)

于 2011-10-25T08:55:15.180 に答える