如何从电子邮件字符串中检索提供电子邮件服务的网站URL?

时间:2011-08-27 15:45:23

标签: ruby email web

我正在使用Ruby on Rails v3.0.9,我发现最好的方式来检索电子邮件字符串的“最后一部分”和相关的网站URL(即网站)提供电子邮件服务。)

例如,如果我有

sample_email_title@gmail.com

我想检索

gmail.com

和“转换”,以便具有以下内容:

http://www.gmail.com

我该如何实现?

2 个答案:

答案 0 :(得分:1)

你可以这样做:

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

可能有更好的方法,但这很简单。

答案 1 :(得分:1)

邮件交换服务器通常位于与电子邮件地址不同的域中,因此您必须使用DNS服务器查找MX记录以获取该信息:

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/

请注意,无法保证Web服务器位于此地址。在我的情况下,电子邮件服务的真实网址是https://www.fastmail.fm/,但幸运的是,使用上述方法生成的网址将转发给您。