如何在没有Ruby发送的情况下检查电子邮件是否存在使用email_veracity_checker

时间:2011-08-18 16:49:04

标签: ruby-on-rails ruby email-validation

我正在尝试创建一个检查某些电子邮件真实存在的ruby脚本。 我找到了email_veracity_checker,但我不明白如何实现一个简单的测试。 “自述文件”文件仅说明以下内容:

# Add following entry in your config/environment.rb
config.gem 'email_veracity_checker', :lib => "email_check"

使用方法:

#first param is user email address
#second sender address
#third param is domain address

#Note: It's not sending email, at the end point they quit connection.
EmailCheck.run("kiran@joshsoftware.com","no-reply@joshsoftware.com","joshsoftware.com").valid?

它的回报可能是真是假“

有人能帮助我吗? 感谢

2 个答案:

答案 0 :(得分:2)

你有什么尝试?看起来很简单。 它的作用是设置SMTP连接,就像发送邮件时一样。在某个时刻,在SMTP连接中,您的服务器会这样说:

  

我想发送邮件给... @ .... com

当此地址不存在时,大多数服务器将返回错误。在此之后,正常的SMTP连接可以自由发送实际的邮件正文。但是,此类在此时关闭连接,因此不会发送任何邮件。

但是,在发送引用邮件之前,需要指定发件人的邮件。这就是你需要指定它的原因。除此之外,您还需要定义所有者的邮件域,因为EHLO有效负载需要它。


做这样的事情怎么样(我正在使用mongo_mapper,所以在你的情况下可能会有所不同):

class User
    include MongoMapper::document
    ...
    key mail, String, :required => true
    ...
    validate :validate_mail
    ...
    def validate_mail
        if !EmailCheck.run(self.mail, "no-reply@yourdomain.com", self.mail.split('@')[1]).valid?
            errors.add :mail, "is invalid."
        end
    end 
end

答案 1 :(得分:1)

如果你需要它用于ruby脚本,你可以做这样的事情。只需要在该宝石的库中找到电子邮件检查。

require 'email_check.rb'

is_valid = EmailCheck.run("kiran@joshsoftware.com", "no-reply@joshsoftware.com", "joshsoftware.com").valid?

puts "is valid: #{is_valid}"
相关问题