-1

Gmail では、ユーザーは account1@gmail.com account2@company.com account3@university.com などの任意のメール スタイルを作成できます。

などなど。現在、https://github.com/liangzan/contactsからのこの連絡先の宝石を使用していますが、account2@company.com のようなアカウントを使用してログインすると、メールアドレスが @gmail ではないため、連絡先を取得できませんまたは @googlemail コードを読んでください。

では、メールアドレスがgmailアドレスの下にあるかどうかを確認するにはどうすればよいですか?

4

1 に答える 1

0

MX レコードをチェックして、Google メール サーバーによってホストされているかどうかを確認できます。

ドメインの mx レコードに googlemail サーバーが見つかった場合、このメソッドは true を返します。Google の 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 に答える