2

ユーザーが提供する電子メールとパスワードの組み合わせから電子メールを送信する Ruby (2.0) コマンドライン アプリを作成しています。(簡単にするために、ここでは Gmail アカウントのみを使用しています。) Ruby の Mail gem を使用することで、メール送信が非常に簡単にできるようになりました。

また、Mail gem は、電子メールが送信されるたびに、ユーザーの電子メールとパスワードの信頼性をチェックできるようです。私が行き詰まっているのは、メールを送信せずにメール/パスワードを認証する方法です。

徹底的にするために、以下の 3 つの試行からの出力を含めました。どれも機能せず、エラーがどこにあったのかわかりません。

これを行うための成功した方法は何ですか?


これまでの試み...

まず、Net::SMTP を使用してみました:

> email = Net::SMTP.new('smtp.gmail.com', 587)
> email.start
> email.starttls
=> #<Net::SMTP::Response:0x007f9ff4133238 @status="220", @string="220 2.0.0 Ready to start TLS\n">

> email.auth_plain(email, password)
EOFError: end of file reached
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:153:in `read_nonblock'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:153:in `rbuf_fill'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:134:in `readuntil'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:144:in `readline'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:931:in `recv_response'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:925:in `get_response'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:737:in `block in auth_plain'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:941:in `critical'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:736:in `auth_plain'
from (irb):7
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/bin/irb:16:in `<main>'

> email.auth_login(email, password)
NoMethodError: undefined method `success?' for "200 dummy reply code":String
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:961:in `check_auth_response'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/smtp.rb:750:in `auth_login'
from (irb):8
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/bin/irb:16:in `<main>'

次に、Net::POP3 を使ってみました。

> email_pop = Net::POP3.new('pop.gmail.com', 995)
=> #<Net::POP3 pop.gmail.com:995 open=false> 
> email_pop.start('dtadams.testmail@gmail.com', 'testmail')
Net::ReadTimeout: Net::ReadTimeout
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:158:in `rescue in rbuf_fill'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:152:in `rbuf_fill'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:134:in `readuntil'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/protocol.rb:144:in `readline'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/pop.rb:996:in `recv_response'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/pop.rb:893:in `block in initialize'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/pop.rb:1012:in `critical'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/pop.rb:893:in `initialize'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/pop.rb:562:in `new'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/pop.rb:562:in `do_start'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/pop.rb:536:in `start'
from (irb):17
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/bin/irb:16:in `<main>'

...そして最後に、Net::IMAP での非常に失敗した試み:

> imap = Net::IMAP.new('imap.gmail.com')
Errno::EHOSTUNREACH: No route to host - connect(2)
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/imap.rb:1045:in `initialize'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/imap.rb:1045:in `open'
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/lib/ruby/2.0.0/net/imap.rb:1045:in `initialize'
from (irb):20:in `new'
from (irb):20
from /Users/nadams/.rvm/rubies/ruby-2.0.0-p0/bin/irb:16:in `<main>'
4

0 に答える 0