检查邮件地址是否在gmail客户端<ruby> </ruby​​>下

时间:2013-03-28 04:30:22

标签: ruby-on-rails ruby gmail email-client

Gmail可以让用户创建任何电子邮件样式,例如 account1@gmail.com account2@company.com account3@university.com

还有更多。 目前,我正在使用来自https://github.com/liangzan/contacts的联系人gem, 但是当我使用account2 @ company.com等帐户登录时,由于电子邮件地址不是@gmail或@googlemail,因此我无法获取我的联系人。

那么,如何检查电子邮件地址是否在gmail地址下?

1 个答案:

答案 0 :(得分:0)

您可以查看他们的MX记录,看看它们是否由googlemail服务器托管。

如果在域的mx记录中找到googlemail服务器,则此方法将返回true。 它使用谷歌的DNS服务器(8.8.8.8)

require 'resolv'

def isGmailAddress?(address)
  domain = address.split("@").last
  Resolv::DNS.open({:nameserver=>["8.8.8.8"]}) do |r|
    mx = r.getresources(domain,Resolv::DNS::Resource::IN::MX)
    if mx.any? {|server| server.exchange.to_s.include? "googlemail" or server.exchange.to_s.include? "gmail-smtp-in.l.google.com"} then
      return true
    end
    return false
  end
end

p isGmailAddress?("emailaddress@gmail.com")

查看http://ruby-doc.org/stdlib-1.9.2/libdoc/resolv/rdoc/Resolv.html