Как получить URL-адрес веб-сайта, который предоставляет службу электронной почты, из строки электронной почты? - PullRequest
0 голосов
/ 27 августа 2011

Я использую Ruby on Rails v3.0.9, и я нахожу лучший способ для извлечения "последней части" строки электронной почты и URL соответствующего веб-сайта (то есть веб-сайта, которыйобеспечивает службу электронной почты).

Например, если у меня есть

sample_email_title@gmail.com

, я хотел бы получить

gmail.com

и "преобразовать", чтобы получитьследующее:

http://www.gmail.com

Как мне это сделать?

Ответы [ 2 ]

1 голос
/ 27 августа 2011

Почтовый сервер обмена часто находится в другом домене, чем адрес электронной почты, поэтому вам придется искать записи MX, используя DNS-сервер, чтобы получить эту информацию:

require 'resolv'

def mx_host_of_domain(domain)
  mx = nil
  Resolv::DNS.open do |dns|
    servers = dns.getresources(domain, Resolv::DNS::Resource::IN::MX)
    if servers && !servers.empty?
      mx = servers.sort_by(&:preference).first.exchange.to_s
    end
  end
  mx
end

email = 'stackoverflow' + '@' + 'larshaugseth.com'

mxhost = mx_host_of_domain email.split('@').last
# => in1.smtp.messagingengine.com

url = "http://www.#{mxhost.split('.').last(2).join('.')}/"
# => http://www.messagingengine.com/

Обратите внимание, что веб-сервер по этому адресу не гарантируется. В моем случае реальный веб-адрес службы электронной почты - https://www.fastmail.fm/,, но, к счастью, адрес, сгенерированный с помощью вышеуказанного метода, направит вас туда.

1 голос
/ 27 августа 2011

Вы можете сделать что-то вроде этого:

a = "my_email@gmail.com"
b = a.split("@").last
=> "gmail.com"

"http://www." + b
=> "http://www.gmail.com"

Вы можете сделать все это в одной строке с:

"http://www." + "my_email@gmail.com".split('@').last

Возможно, есть лучшие способы, но это довольно просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...