Gmail可以让用户创建任何电子邮件样式,例如 account1@gmail.com account2@company.com account3@university.com
还有更多。 目前,我正在使用来自https://github.com/liangzan/contacts的联系人gem, 但是当我使用account2 @ company.com等帐户登录时,由于电子邮件地址不是@gmail或@googlemail,因此我无法获取我的联系人。
那么,如何检查电子邮件地址是否在gmail地址下?
答案 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