4

了解しました。説明するのに少し時間がかかる場合があります。

私はEメール<>SMSブリッジ(Teleflipのような)の作成に取り組んでいます。動作するパラメータをいくつか設定しました。

  • DreamhostWebホスティング
  • PHP 5(PEARなし)
  • Postfix
  • MySQL(必要な場合)

私が今持っているのは、シェルアカウントに送信された電子メールを転送する包括的な電子メールアドレスです。次に、シェルアカウントはそれを私のPHPスクリプトに転送します。

PHPスクリプトはそれを読み取り、正しく送信されることを確認するためにいくつかの電子メールヘッダーを取り除き、受信者として指定された番号に転送します。5551234567@sms.bridge.gvoms.comはもちろん、SMSを+1(555)123-4567に送信します。

Toフィールドを解析し、送信先の電子メールアドレスだけを取得しているので、これは非常にうまく機能します。しかし、私が説明しなかったことに気付いたのは、複数の受信者です。たとえば、5551234567と1235554567の両方に送信された電子メール(To行、CC行、またはそれらの任意の組み合わせを使用)。

もちろん、電子メールの仕組みは、2つの電子メールを受信し、それぞれを個別に解析することになり、5551234567は同じメッセージを2回受信することになります。

TOおよびCCで指定された各番号がメッセージのコピーを1つ取得できるように、この状況を処理するための最良の方法は何ですか。

さらに、その可能性は疑わしいですが、BCCを同じように処理する方法はありますか?

4

4 に答える 4

2

メールのヘッダーを確認すると、Message-ID フィールドが見つかるはずです ( RFC2822 によると - セクション 3.6.4 )。したがって、同じメッセージ ID と電話番号を持つメールの SMS を既に送信しているかどうかをテストして、同じメッセージが同じ番号に 2 回送信されるのを防ぐことができます。

于 2010-03-30T13:24:48.587 に答える
1

imapのようなものを使用してキャッチオール メールボックスをチェックし、メッセージをループして、終了したら削除してみませんか? そうすれば、それらを別のアカウントに転送する必要はありません。

于 2010-03-30T13:22:43.777 に答える
0

ここでは wimvds が最良の答えでしたが、別の場所で、Dreamhost をシステムで実行する方法に「X-DH-Original-To」ヘッダーが含まれていることがわかりました。これを使用すると、メールの受信時にデータベースと照合せずに、各番号に個別に送信できます。これは Blind Carbon Copy でも動作するはずです (電子メールがどのように機能するかを説明するのに十分な詳細を知りません)。

于 2010-03-30T20:19:56.867 に答える
0

ばかげた汚れた解決策: メールからすべての受信者を解析し、S​​MS を送信してから、メッセージ テキストの md5 を含む一時テーブルにすべてを配置します。そして、このテーブルに対してすべての受信メールをチェックします。

于 2010-03-30T13:12:36.970 に答える