5

現在、私はシステム(カスタムCMS)を構築しており、要件は、登録された電子メールアドレスに公開されたすべての電子メールをキャッチし、登録された電子メールを介してシステムを介して電子メールアドレスを介して返信することです.

例えば:

  1. 私はそれをinfo@st​​ackoverflow.comに設定し、slim@slim.comがinfo@st​​ackoverflow.comに電子メールを送信したとき
  2. 私のシステムはそれをキャッチし、グループへの添付ファイル付きの電子メールを表示します
  3. 誰がメールを処理するかによって、「randomHashTemp」@stackoverflow.com が生成され、誰がケースを処理するかが特定されます
  4. システムは "randomHashTemp"@stackoverflow.com 経由で返信します (Google グループのように)
  5. 「randomHashTemp」@stackoverflow.com 経由で通信を続けます。

しかし

  1. ユーザーがelse@stackoverflow.comに送信された場合、交換のような現在の電子メールサーバーによってキャッチされます

これの用語がわかりません。どうすれば実装できますか?いくつかのリンクまたはキーワードでアドバイスしてください。私はナレッジベース ソリューション、CRM、CNAME を介して統合されたプロジェクト管理ソフトウェア、DNS の変更などについて多くのことを知っていましたが、その方法についてはわかりませんでした。ありがとう。

アップデート

サンプルはhttp://www.cloudmailin.comのようなものになります が、私が欲しいのは、アプリから生成し、クライアントのためにパブリックからメールを受信することです。

4

4 に答える 4

1

私はcloudmailinでこれを正確に行いました。必要なのは、すべてのパブリックアドレスからcloudmailinアドレスへのメール転送を設定することだけです。それで:

  1. ユーザーは、たとえば、でランダムにハッシュされたアドレスに電子メールを送信しますinfo+dfj28d@example.com

  2. example.comのメールサーバーは、すべてのメールをinfoに転送しますyouraccount@cloudmailin.com

  3. Cloudmailinは、のWebサイトに電子メールを投稿しますhttp://example.com/yourwebhook.php

  4. すべてのメールが単一のcloudmailinアドレスでフィルタリングされている場合でも、cloudmailinは投稿するフィールドに元のハッシュされた宛先アドレスを含めるため、Webサイトはハッシュを抽出して、どのユーザーが返信しているかを判断できます。あなたにアイデアを与えるための偽性PHP:

    <?php /* webhooks.php */
    $address = $_POST['to']; // 'info+dfj28d@example.com'
    $addressParts = explode('@', $address); // array('info+dfj28d', 'example.com')
    $userParts = explode('+', $addressParts[0]); // array('info', 'dfj28d');
    $hash = $userParts[0]; // 'dfj28d'
    ?>
    

この例ではinfo+dfj28d、メールドメインがGmailでホストされているため、ハッシュを使用しています。そのため、Gmailのusername+alias構文は、すべてのランダムなハッシュを同じメールボックスに送信する簡単な方法でした。他のメールホストには、ワイルドカードエイリアスを作成する同様の方法があります。

dfj28d重要なのは、アドレスにランダムコンポーネント( )と静的コンポーネント()の両方が必要であるため、メールサーバーはハッシュアドレス(を含むもの)と通常のメールアカウント( )infoの違いを認識できます。infoelse@example.com

于 2013-03-19T23:31:59.950 に答える
1

同様のセットアップに Google Apps を使用します。http://www.google.com/apps/

すべてのメールをキャッチオールとして受信する単一の「app@」アカウントを作成しました。アプリは、あなたのような受信メール用に独自のメールアドレスを生成します。このアプリは、IMAP 経由で受信メールを読み取るように (php) 作成されました。

[ちなみに、アプリ専用に設定された別のドメインを使用することをお勧めします。これにより、メールサーバーと責任が分離され、クライアントがアプリを壊すことなくメールサーバーを変更/アップグレード/再構成できるようになります。]

「実際の」ユーザーを Apps バックエンドに追加する機能を保持します。つまり、メールが誤って送信された場合に「else@」を転送できます。

追加の利点は次のとおりです。

  • Google スパム フィルターを取得します。
  • ウェブメール インターフェイス (基本的には gmail) を取得します。
  • ドメインをエイリアスとして追加できるため、複数のドメインを簡単に設定できます。(警告: ドメインをエイリアスとして追加する必要があります。メインの Apps ドメインのみがキャッチオールをサポートしています)

必要な手順:

  1. ドメインで Google Apps を設定します。電子メールの場合、DNS エントリが含まれるため、制御サーバーの下にあるドメインが最適です。
  2. アプリのアカウントを追加し、キャッチオールを設定します。
  3. 上記のアプリをビルドします ;) 特別な電子メール アドレスの生成は問題にならないはずです - 私たちは operation.000345@ のような形式を使用します
  4. 受信メールを読み取る部分をビルドします。http://php.net/manual/en/book.imap.php私たちのアプリは、メールがアプリ内で何に関連するかを見つけることができるかどうかに応じて、メールを受信トレイから「AppArchive」または「AppInvalid」に移動します。(また、AppInvalid を受信トレイにドラッグすることで簡単にデバッグできます)。
  5. ウェブメール クライアントにアプリ アカウントでログインし、魔法が起こるのを見てください...

IMAP コードについてもう少し詳しく説明することもできますが、その考えは明確なはずです。


(私たちは別のプロジェクトにも Mandrill を使用しています - そして彼らの API も同様に良い方法のようです)

于 2013-03-20T10:51:52.173 に答える
1

これを実現するには、主に 2 つの方法があります

メールボックスからメールを取得する

この方法では、電子メールはメールボックスに送られ、このメールボックス内のコンテンツを定期的にチェックして電子メールを処理します。これは一般にラグの原因となりますが、プログラムを定期的に実行し、常にメールボックスをポーリングすることでこれを減らすことができます。

関連する質問

メール処理をプログラムにリダイレクトする

メール サーバーが UNIX 上にある場合は、メール処理をスクリプトにリダイレクトして、必要に応じてメールを処理できます。

SO外の関連する質問

具体的には、procmail スクリプトをサポートする Web ホストを見つけるのが最も簡単な場合があります。これらの構成スクリプトを使用すると、電子メールを PHP プログラムにリダイレクトすることができ、これをドメインのすべての電子メールのキャッチオールとして実行できます。この回答例を参照してください

于 2013-03-12T07:00:34.637 に答える
0

質問に答えてくれてありがとう!数日間の調査の後、ついに私はある種の手がかりを得ました。これが質問に対するまとめられた答えです。

まず、fMailboxをシステムに実装します。[@Nytramのおかげで、50の評判を与えるために私への質問として答えてください。このリンクはとても意味がありました!]それを実現するためにメール受信機能。この方法は、電子メールサーバーに触れる必要はなく、システム環境自体に触れる必要もありません。純粋なPHPで実行できます。フレームワークではないので、関数の一部だけを自由に抽出できます。これは、このケースシナリオに最適なツールです(もっとよく知っている場合はアドバイスしてください!ありがとうございます)

  • FMailboxの設定

次に、[@ Ramon delaFuente]の概念を実装します。(@Ramon de la Fuenteに感謝します。グーグルアプリは良いですが、歴史になりました:Pまだ無料のときは良いですが、今ではすべてのクライアントにグーグルアプリを使用するよう説得するのは難しいです。サイトに独自のExchangeサーバーがインストールされている可能性があります。知る :))

  • すべてをキャッチするようにクライアントの単一の電子メールを設定する(*@email.com)

第三に、[@Nick]のコードを実装します。(プライバシーと機密の問題のため、@ Nickに感謝します。クライアントの電子メールは自分自身にも大きな意味がありますが、サードパーティのプラグインの使用を最小限に抑える必要があります。cloudmailinのアイデアは大好きですが)

  • Explodecatchの電子メールアドレス部分を実装します。

送信用、システムがすべてをキャッチするように定義されているため。フィールドreply-toを事前定義するだけで、FMailboxもそれをキャッチします;)

すべてのリソースをありがとう!

于 2013-03-20T14:42:27.177 に答える