4

好吧,这可能需要一两分钟来解释:

我正在创建一个电子邮件<>短信桥(如 Teleflip)。我有一些设置参数可以使用:

  • Dreamhost 虚拟主机
  • PHP 5(没有梨)
  • 后缀
  • MySQL(如果需要)

我现在拥有的是一个包罗万象的电子邮件地址,它将发送的电子邮件转发到 shell 帐户。shell 帐户又将其转发到我的 PHP 脚本。

PHP 脚本读取它,去除一些电子邮件标头以确保它正确发送,然后将其转发到指定为收件人的号码。5551234567@sms.bridge.gvoms.com 当然会向 +1 (555) 123-4567 发送短信。

这非常有效,因为我正在解析 To 字段并仅获取它发送到的电子邮件地址。但是,我意识到我没有考虑到多个收件人。例如,发送到 5551234567 和 1235554567 的电子邮件(使用 To 行、CC 行或它们的任意组合)。

当然,电子邮件的工作方式是我收到两封电子邮件,最终分别解析每封电子邮件,而 5551234567 最终收到两次相同的消息。

处理这种情况的最佳方法是什么,以便在 TO 和 CC 中指定的每个数字都可以获得一份消息副本。

另外,虽然我怀疑它的可能性:有没有办法以同样的方式处理密件抄送?

4

4 回答 4

2

如果您检查邮件的标题,您应该找到一个 Message-ID 字段(根据RFC2822 - 第 3.6.4 节)。因此,您可以测试您是否已经为具有相同 Message-ID 和电话号码的邮件发送了 SMS,以防止将相同的消息发送到相同的号码两次。

于 2010-03-30T13:24:48.587 回答
1

为什么不使用imap之类的东西来检查所有邮箱,循环查看邮件,然后在完成后将其删除?这样您就不需要将它们转发到单独的帐户。

于 2010-03-30T13:22:43.777 回答
0

愚蠢肮脏的解决方案:从邮件中解析所有收件人,然后向他们发送短信,然后将它们全部放入带有消息文本md5的临时表中。并对照此表检查所有收到的邮件。

于 2010-03-30T13:12:36.970 回答
0

虽然 wimvds 在这里有最好的答案,但我在其他地方发现 Dreamhost 在我通过系统运行它的方式中包含一个“X-DH-Original-To”标头。使用它,我可以在收到电子邮件后单独发送到每个号码,而无需根据数据库进行检查。这也应该适用于 Blind Carbon Copy(我不知道电子邮件如何工作的细节足以告诉您它是如何工作的)。

于 2010-03-30T20:19:56.867 回答