我正在尝试使用net/imap
连接到我的邮件服务器,但出现以下错误
回溯(最近一次调用): 12:来自 imap.rb:15:in
<main>' 11: from imap.rb:5:in
method_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:in
tcp' 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:in
4:来自/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:in
connect_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)