| 
 
| 赞 | 13 |  
| VIP | 118 |  
| 好人卡 | 28 |  
| 积分 | 13 |  
| 经验 | 35779 |  
| 最后登录 | 2017-7-6 |  
| 在线时间 | 1564 小时 |  
 Lv3.寻梦者 
	梦石0 星屑1305 在线时间1564 小时注册时间2008-7-30帖子4418 
 | 
| 本帖最后由 DeathKing 于 2010-11-12 18:19 编辑 
 ri,一个很好的帮手,不过需要安装了Ruby,因为他是有Dave Thomas(《Programming Ruby》的作者之一)设计的工具。
 查询一下Net::POP3如何使用,有点像是man?真是意外的详细复制代码Usage: ri.bat [options] [names...]
复制代码C:\Documents and Settings\DeathKing>ri Net::POP3
-------------------------------------------- Class: Net::POP3 < Protocol
NET::POP3
=========
What is This Library?
---------------------
     This library provides functionality for retrieving email via POP3,
     the Post Office Protocol version 3. For details of POP3, see
     [RFC1939] (http://www.ietf.org/rfc/rfc1939.txt).
Examples
--------
     Retrieving Messages
     This example retrieves messages from the server and deletes them on
     the server.
     Messages are written to files named 'inbox/1', 'inbox/2', ....
     Replace 'pop.example.com' with your POP3 server address, and
     'YourAccount' and 'YourPassword' with the appropriate account
     details.
         require 'net/pop'
         pop = Net::POP3.new('pop.example.com')
         pop.start('YourAccount', 'YourPassword')             # (1)
         if pop.mails.empty?
           puts 'No mail.'
         else
           i = 0
           pop.each_mail do |m|   # or "pop.mails.each ..."   # (2)
             File.open("inbox/#{i}", 'w') do |f|
               f.write m.pop
             end
             m.delete
             i += 1
           end
           puts "#{pop.mails.size} mails popped."
         end
         pop.finish                                           # (3)
     1.  Call Net::POP3#start and start POP session.
     2.  Access messages by using POP3#each_mail and/or POP3#mails.
     3.  Close POP session by calling POP3#finish or use the block form
         of #start.
     Shortened Code
     The example above is very verbose. You can shorten the code by
     using some utility methods. First, the block form of
     Net::POP3.start can be used instead of POP3.new, POP3#start and
     POP3#finish.
         require 'net/pop'
         Net::POP3.start('pop.example.com', 110,
                         'YourAccount', 'YourPassword') do |pop|
           if pop.mails.empty?
             puts 'No mail.'
           else
             i = 0
             pop.each_mail do |m|   # or "pop.mails.each ..."
               File.open("inbox/#{i}", 'w') do |f|
                 f.write m.pop
               end
               m.delete
               i += 1
             end
             puts "#{pop.mails.size} mails popped."
           end
         end
     POP3#delete_all is an alternative for #each_mail and #delete.
         require 'net/pop'
         Net::POP3.start('pop.example.com', 110,
                         'YourAccount', 'YourPassword') do |pop|
           if pop.mails.empty?
             puts 'No mail.'
           else
             i = 1
             pop.delete_all do |m|
               File.open("inbox/#{i}", 'w') do |f|
                 f.write m.pop
               end
               i += 1
             end
           end
         end
     And here is an even shorter example.
         require 'net/pop'
         i = 0
         Net::POP3.delete_all('pop.example.com', 110,
                              'YourAccount', 'YourPassword') do |m|
           File.open("inbox/#{i}", 'w') do |f|
             f.write m.pop
           end
           i += 1
         end
     Memory Space Issues
     All the examples above get each message as one big string. This
     example avoids this.
         require 'net/pop'
         i = 1
         Net::POP3.delete_all('pop.example.com', 110,
                              'YourAccount', 'YourPassword') do |m|
           File.open("inbox/#{i}", 'w') do |f|
             m.pop do |chunk|    # get a message little by little.
               f.write chunk
             end
             i += 1
           end
         end
     Using APOP
     The net/pop library supports APOP authentication. To use APOP, use
     the Net::APOP class instead of the Net::POP3 class. You can use the
     utility method, Net::POP3.APOP(). For example:
         require 'net/pop'
         # Use APOP authentication if $isapop == true
         pop = Net::POP3.APOP($is_apop).new('apop.example.com', 110)
         pop.start(YourAccount', 'YourPassword') do |pop|
           # Rest of the code is the same.
         end
     Fetch Only Selected Mail Using 'UIDL' POP Command
     If your POP server provides UIDL functionality, you can grab only
     selected mails from the POP server. e.g.
         def need_pop?( id )
           # determine if we need pop this mail...
         end
         Net::POP3.start('pop.example.com', 110,
                         'Your account', 'Your password') do |pop|
           pop.mails.select { |m| need_pop?(m.unique_id) }.each do |m|
             do_something(m.pop)
           end
         end
     The POPMail#unique_id() method returns the unique-id of the message
     as a String. Normally the unique-id is a hash of the message.
------------------------------------------------------------------------
Constants:
----------
     Revision = %q$Revision: 19776 $.split[1]
Attributes:
-----------
     address (R):
          The address to connect to.
     open_timeout (RW):
          Seconds to wait until a connection is opened. If the POP3
          object cannot open a connection within this time, it raises a
          TimeoutError exception.
     read_timeout (R):
          Seconds to wait until reading one block (by one read(1) call).
          If the POP3 object cannot complete a read() within this time,
          it raises a TimeoutError exception.
Class methods:
--------------
     APOP, auth_only, certs, create_ssl_params, default_pop3_port,
     default_pop3s_port, default_port, delete_all, disable_ssl,
     enable_ssl, foreach, new, ssl_params, start, use_ssl?, verify
Instance methods:
-----------------
     active?, apop?, auth_only, command, delete_all, disable_ssl,
     do_finish, do_start, each, each_mail, enable_ssl, finish, inspect,
     logging, mails, n_bytes, n_mails, on_connect, port, read_timeout=,
     reset, set_debug_output, start, started?, use_ssl?
 | 
 |