使用 net/imap 连接到 imap.google 会出错



我正在尝试使用net/imap连接到我的邮件服务器,但出现以下错误

回溯(最近一次调用): 12:来自 imap.rb:15:in<main>' 11: from imap.rb:5:inmethod_name' 10:从 IMAP.rb:5:INnew' 9: from /home/radoslav/.rbenv/versions/2.6.1/lib/ruby/2.6.0/net/imap.rb:1089:in初始化' 8: from/home/radoslav/.rbenv/versions/2.6.1/lib/ruby/2.6.0/net/imap.rb:1132:intcp_socket' 7: from /home/radoslav/.rbenv/versions/2.6.1/lib/ruby/2.6.0/socket.rb:631:intcp' 6:来自/home/radoslav/.rbenv/versions/2.6.1/lib/ruby/2.6.0/socket.rb:227:inforeach' 5: from /home/radoslav/.rbenv/versions/2.6.1/lib/ruby/2.6.0/socket.rb:227:in4:来自/home/radoslav/.rbenv/versions/2.6.1/lib/ruby/2.6.0/socket.rb:641:inblock in tcp' 3: from /home/radoslav/.rbenv/versions/2.6.1/lib/ruby/2.6.0/socket.rb:137:in连接' 2: 来自/home/radoslav/.rbenv/versions/2.6.1/lib/ruby/2.6.0/socket.rb:56:inconnect_internal' 1: from /home/radoslav/.rbenv/versions/2.6.1/lib/ruby/2.6.0/socket.rb:1213:inconnect_nonblock'/home/radoslav/.rbenv/versions/2.6.1/lib/ruby/2.6.0/socket.rb:1213:in '__connect_nonblock': 网络无法访问 - 连接(2) for [2a00:1450:400c:c07::6d]:143 (errno::enetunreach)

这是我正在使用的代码:

require 'net/imap'
def method_name
imap = Net::IMAP.new('imap.gmail.com')
imap.authenticate('LOGIN', 'my.name.here@gmail.com', 'mypasshere')
imap.examine('INBOX')
imap.search(["RECENT"]).each do |message_id|
puts "#{message_id}"
end
puts "Hello"
end

method_name()

我怀疑这与系统有关,而不是宝石本身,但在互联网上找不到解决方案。

这台机器肯定可以上网。

radoslav@radoslav-VirtualBox:~/Documents/Ruby/imap$ telnet imap.gmail.com 993
Trying 74.125.140.109...
Connected to gmail-imap.l.google.com.

根据错误回溯,它试图通过 tcp 端口 143 进行连接:

Network is unreachable - connect(2) for [2a00:1450:400c:c07::6d]:143

您通过 993 对其进行了测试:

radoslav@radoslav-VirtualBox:~/Documents/Ruby/imap$ telnet imap.gmail.com 993

143 是基于docs的 IMAP默认值,因此更改此行以传递正确的端口号:

imap = Net::IMAP.new('imap.gmail.com', port: 993)

最新更新