-1

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

还有很多。目前,我正在使用来自https://github.com/liangzan/contacts的联系人 gem ,但是当我使用 account2@company.com 之类的帐户登录时,它无法获取我的联系人,因为电子邮件地址不是 @gmail或@googlemail 在我阅读代码时。

那么,如何查看邮箱地址是否在gmail地址下呢?

4

1 回答 1

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

于 2013-03-28T04:48:09.993 回答