【问题标题】:NLP Email ValidationNLP 电子邮件验证
【发布时间】:2017-01-14 05:02:30
【问题描述】:

如果我有一组从 Hive 表中检索到的电子邮件,这些电子邮件在下面的 spark 代码中称为 users:

val sparkConf = new SparkConf().setAppName("YOUR_APP_NAME").setMaster("local[10]")
val sc = new SparkContext(sparkConf)
val sqlContext = new SQLContext(sc)
val hiveContext = new HiveContext(sc)

hiveContext.setConf("hive.metastore.uris", "METASTORE_URI_NAME_HERE")

val df = hiveContext.sql("SELECT email FROM USERS")

现在 df 包含一个数据框,其中包含所有电子邮件地址的一行。在 scala 中有没有一种方法可以验证电子邮件地址,例如:(https://pypi.python.org/pypi/validate_email) 除了这个是在 python 中我需要一个在 scala 中。或者 NLP 也会是一个很好的用例吗?

我不知道如何验证这些电子邮件地址,而且我需要的不仅仅是一些正则表达式。我需要一种方法来检查电子邮件地址的域是否有 SMTP 服务器。

类似这样的东西(除了在 scala 中):

is_valid = validate_email('example@example.com',check_smtp_connection = True)

【问题讨论】:

  • 问题实际上是“如何在scala中验证电子邮件”,答案与“如何在java中验证电子邮件”相同

标签: scala apache-spark hive nlp


【解决方案1】:

您绝对不需要自然语言处理来验证电子邮件。您应该为此使用javamail,它支持 SMTP 验证。

还请注意,检查电子邮件真的是否存在的唯一可能方法 - 发送用户唯一链接并要求关注它。

【讨论】:

  • 你能给我一些关于我如何使用javamail的建议吗?基本上,我在电子邮件中不知道该域是否一开始就存在。就像我可以收到1234.comjsdklfj@jsdaklf.com 之类的电子邮件。所以基本上管道是首先我需要检查域是否存在,然后我需要像你说的那样“向他们发送一些独特的链接并要求遵循它”。我可以遵循一些示例代码来实现这一点吗?
  • 要验证 SMTP 服务器凭据,您可以使用 stackoverflow.com/questions/3060837/…。但是你不能检查给定的电子邮件是否存在,只有当它可能存在时。这可以通过crunchify.com/how-to-validate-email-address-using-java-mail-api 之类的方式来完成。但是,正如我在答案中所写,唯一可靠的检查是要求用户关注一些已经发送的唯一链接。
  • 您好,很抱歉回复晚了,但您能否解释一下“要求用户关注一些已经发送的唯一链接”的意思。因此,如果用户确实单击了该链接,我将如何获得该通知?这就是你想说的我实施的吗? javamail 中有这个功能吗?
  • 是的,用户应该点击链接。通常会创建一些特殊的控制器来跟踪这些点击(您不能指望立即得到响应,而是几小时/几天)。据我所知,javamail 没有内置此功能。
  • 好的,我们会看看。感谢您的输入和指点!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-07-30
  • 2013-11-05
  • 2023-04-06
  • 2011-09-25
  • 2017-03-03
  • 2020-03-18
相关资源
最近更新 更多