【问题标题】:How to weed out bad emails (in php)?如何清除不良电子邮件(在 php 中)?
【发布时间】:2009-11-22 09:46:49
【问题描述】:

我有一个用户注册帐户的网站。我有一个内部通信系统,当他们收到私人消息时会向他们发送电子邮件。我不强迫人们确认他们的电子邮件,所以很自然地,很多人输入了一个假地址。

当他们收到 PM 时,它会尝试向他们发送一封电子邮件,但显然失败了,因此它不断地重试和重试。几周后,重试队列变得相当大,它会影响服务器性能(我也不想因为所有这些尝试而被列入黑名单)。

我能做些什么来解决这个问题(除了强迫人们在注册时确认他们的电子邮件)。

【问题讨论】:

    标签: php email-validation


    【解决方案1】:

    如果您不想强迫人们确认他们的电子邮件,因为如果出现问题,他们无法立即访问他们的登录信息,为什么不这样做:

    • 如果他们没有确认他们的电子邮件,请不要发送 PM,而是在他们登录时显示。提醒他们确认他们的电子邮件。

    • 如果他们已确认电子邮件,请将其发送出去。

    但无论如何,您的情况听起来像是服务器配置错误。为什么邮件服务器会不断重新发送收到“不可投递”消息的邮件?据我所知,只有在由于技术原因无法访问接收主机时才会重新发送邮件。

    【讨论】:

    • “您的情况听起来像是服务器配置错误”:确实,不存在的电子邮件地址必须立即导致退回。 +1
    【解决方案2】:

    你真的应该只需要确认。

    除此之外,您可以停用电子邮件已退回一定次数的用户,并在下次登录时要求使用新电子邮件。

    【讨论】:

    • 称之为妄想症,但我讨厌将我的真实电子邮件发送到任何地方。
    • 另外,那家伙说“除了确认电子邮件”,所以-1
    • 为此目的保留单独的电子邮件?
    • RCIX,我提供了一个“除了确认电子邮件之外”的解决方案,那到底是什么?
    【解决方案3】:

    如果不进行验证将很难,但您至少可以验证它来自的域:

    选项 1:使用 getmxrr 在其主机名上搜索 MX 记录

    选项 2:使用 checkndsrr 检查他们的 DNS 信息

    但所有这些真正做的是检查域的有效性,以及它是否正在运行邮件服务器。要获得真正的身份验证,确认是最好的方法。您还可以实现一个工具来发送测试电子邮件,并查看它是否会退回。但是这种方法可能并不总是像预期的那样工作,因为变化,一些服务器是即时的,另一些可能是一天后返回无法送达的电子邮件。

    我希望这会有所帮助。

    【讨论】:

      【解决方案4】:

      考虑设置一个复选框,以便人们可以选择不接收电子邮件通知。如果他们没有输入有效的电子邮件地址,那肯定是因为他们一开始就不想接收电子邮件,所以让他们告诉你。

      此外,您可以考虑建立一个选择加入系统,人们首先不会收到电子邮件通知,并且必须在他们的帐户设置中的某处启用它,在此提供一个电子邮件地址片刻。这样,虚假电子邮件地址的数量将减少到接近于零。

      【讨论】:

        猜你喜欢
        • 2011-01-28
        • 2012-05-31
        • 2021-06-29
        • 1970-01-01
        • 2018-06-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-04-18
        相关资源
        最近更新 更多