我正在使用Ruby on Rails v3.0.9,我發現是最佳方式來檢索電子郵件字符串的「最後部分」和相關的網站URL(即提供電子郵件服務的網站) 。如何從電子郵件字符串中檢索提供電子郵件服務的網站URL?
舉例來說,如果我有
[email protected]
我想找回
gmail.com
和 「改造」,這麼有以下幾點:
http://www.gmail.com
如何我完成了嗎?
我正在使用Ruby on Rails v3.0.9,我發現是最佳方式來檢索電子郵件字符串的「最後部分」和相關的網站URL(即提供電子郵件服務的網站) 。如何從電子郵件字符串中檢索提供電子郵件服務的網站URL?
舉例來說,如果我有
[email protected]
我想找回
gmail.com
和 「改造」,這麼有以下幾點:
http://www.gmail.com
如何我完成了嗎?
你可以做這樣的事情:
a = "[email protected]"
b = a.split("@").last
=> "gmail.com"
"http://www." + b
=> "http://www.gmail.com"
你可以用做這一切在同一行:
"http://www." + "[email protected]".split('@').last
可能有更好的方法,但這是相當簡單的。
郵件交換服務器往往會在除電子郵件地址不同的領域,所以你將不得不使用的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/,但幸運的是,使用上述方法生成的網址會將您轉發到那裏。
+1特別是關於這樣做缺乏有用性的評論。你爲什麼這樣做,爲什麼你假設一個電子郵件域有一個網站,反之亦然? – tripleee