赞 | 13 |
VIP | 118 |
好人卡 | 28 |
积分 | 12 |
经验 | 35779 |
最后登录 | 2017-7-6 |
在线时间 | 1564 小时 |
Lv3.寻梦者
- 梦石
- 0
- 星屑
- 1165
- 在线时间
- 1564 小时
- 注册时间
- 2008-7-30
- 帖子
- 4418
|
本帖最后由 DeathKing 于 2010-11-12 18:19 编辑
ri,一个很好的帮手,不过需要安装了Ruby,因为他是有Dave Thomas(《Programming Ruby》的作者之一)设计的工具。- Usage: ri.bat [options] [names...]
复制代码 查询一下Net::POP3如何使用,有点像是man?真是意外的详细- 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?
复制代码 |
|