summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--lib/net/http.rb7
-rw-r--r--lib/net/pop.rb7
-rw-r--r--lib/net/protocol.rb16
-rw-r--r--lib/net/smtp.rb56
5 files changed, 56 insertions, 38 deletions
diff --git a/ChangeLog b/ChangeLog
index f74ef95126..de1fe58a49 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,11 @@
+Thu Aug 17 04:26:31 2000 Minero Aoki <aamine@dp.u-netsurf.ne.jp>
+
+ * lib/net/protocol.rb, smtp.rb, pop.rb, http.rb: 1.1.27.
+
+ * lib/net/protocol.rb: writing methods returns written byte size.
+
+ * lib/net/smtp.rb: send_mail accepts many destinations.
+
Tue Aug 15 17:30:59 2000 Yukihiro Matsumoto <matz@ruby-lang.org>
* eval.c (frame_dup): should set flag FRAME_MALLOC after
diff --git a/lib/net/http.rb b/lib/net/http.rb
index 5a5917baa0..e5822d6138 100644
--- a/lib/net/http.rb
+++ b/lib/net/http.rb
@@ -1,12 +1,13 @@
=begin
-= net/http.rb version 1.1.27
+= net/http.rb version 1.1.28
maintained by Minero Aoki <aamine@dp.u-netsurf.ne.jp>
This file is derived from "http-access.rb".
-This library is distributed under the terms of the Ruby license.
-You can freely distribute/modify this library.
+This program is free software.
+You can distribute/modify this program under
+the terms of the Ruby Distribute License.
= class HTTP
diff --git a/lib/net/pop.rb b/lib/net/pop.rb
index 01b2deaa84..6e12d4064a 100644
--- a/lib/net/pop.rb
+++ b/lib/net/pop.rb
@@ -1,11 +1,12 @@
=begin
-= net/pop.rb version 1.1.27
+= net/pop.rb version 1.1.28
written by Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-This library is distributed under the terms of the Ruby license.
-You can freely distribute/modify this library.
+This program is free software.
+You can distribute/modify this program under
+the terms of the Ruby Distribute License.
== Net::POP3
diff --git a/lib/net/protocol.rb b/lib/net/protocol.rb
index b351c268bd..16d6cac747 100644
--- a/lib/net/protocol.rb
+++ b/lib/net/protocol.rb
@@ -1,11 +1,12 @@
=begin
-= net/protocol.rb version 1.1.27
+= net/protocol.rb version 1.1.28
written by Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-This library is distributed under the terms of the Ruby license.
-You can freely distribute/modify this library.
+This program is free software.
+You can distribute/modify this program under
+the terms of the Ruby Distribute License.
== Net::Protocol
@@ -64,7 +65,7 @@ module Net
class Protocol
- Version = '1.1.27'
+ Version = '1.1.28'
class << self
@@ -75,7 +76,7 @@ module Net
if iterator? then
instance.start( *args ) { yield instance }
else
- instance.start *args
+ instance.start( *args )
instance
end
end
@@ -164,7 +165,7 @@ module Net
begin
connect
- do_start *args
+ do_start( *args )
@active = true
yield self if iterator?
ensure
@@ -639,10 +640,13 @@ module Net
def wpend_in( src )
line = nil
+ pre = @writtensize
each_crlf_line( src ) do |line|
do_write '.' if line[0] == ?.
do_write line
end
+
+ @writtensize - pre
end
def use_each_crlf_line
diff --git a/lib/net/smtp.rb b/lib/net/smtp.rb
index 0b4313c520..53bed4910b 100644
--- a/lib/net/smtp.rb
+++ b/lib/net/smtp.rb
@@ -1,11 +1,12 @@
=begin
-= net/smtp.rb version 1.1.27
+= net/smtp.rb version 1.1.28
written by Minero Aoki <aamine@dp.u-netsurf.ne.jp>
-This library is distributed under the terms of the Ruby license.
-You can freely distribute/modify this library.
+This program is free software.
+You can distribute/modify this program under
+the terms of the Ruby Distribute License.
== Net::SMTP
@@ -21,7 +22,7 @@ Net::Protocol
: start( address = 'localhost', port = 25, *protoargs )
: start( address = 'localhost', port = 25, *protoargs ) {|smtp| .... }
- same to Net::SMTP.new( address, port ).start( *protoargs )
+ is equal to Net::SMTP.new( address, port ).start( *protoargs )
=== Methods
@@ -38,14 +39,14 @@ Net::Protocol
If account and password are given, is trying to get authentication
by using AUTH command. "authtype" is :plain (symbol) or :cram_md5.
-: send_mail( mailsrc, from_addr, to_addrs )
-: sendmail( mailsrc, from_addr, to_addrs )
- This method sends 'mailsrc' as mail. SMTPSession read strings
+: send_mail( mailsrc, from_addr, *to_addrs )
+: sendmail( mailsrc, from_addr, *to_addrs )
+ This method sends 'mailsrc' as mail. SMTP read strings
from 'mailsrc' by calling 'each' iterator, and convert them
into "\r\n" terminated string when write.
from_addr must be String.
- to_addrs must be Array of String, or String.
+ to_addrs must be a String(s) or an Array of String.
Exceptions which SMTP raises are:
* Net::ProtoSyntaxError: syntax error (errno.500)
@@ -53,6 +54,12 @@ Net::Protocol
* Net::ProtoUnknownError: unknown error
* Net::ProtoServerBusy: temporary error (errno.420/450)
+ # usage example
+
+ Net::SMTP.start( 'localhost', 25 ) do |smtp|
+ smtp.send_mail mail_string, 'from-addr@foo.or.jp', 'to-addr@bar.or.jp'
+ end
+
: ready( from_addr, to_addrs ) {|adapter| .... }
This method stands by the SMTP object for sending mail.
In the block of this iterator, you can call ONLY 'write' method
@@ -60,7 +67,7 @@ Net::Protocol
# usage example
- SMTP.start( 'localhost', 25 ) do |smtp|
+ Net::SMTP.start( 'localhost', 25 ) do |smtp|
smtp.ready( from, to ) do |adapter|
adapter.write str1
adapter.write str2
@@ -69,8 +76,8 @@ Net::Protocol
end
: finish
- This method ends SMTP.
- If protocol had not started, do nothind and return false.
+ finishes SMTP session.
+ If SMTP session had not started, do nothing and return false.
=end
@@ -92,17 +99,17 @@ module Net
@esmtp = true
end
-
attr :esmtp
- def send_mail( mailsrc, from_addr, to_addrs )
- do_ready from_addr, to_addrs
+ def send_mail( mailsrc, from_addr, *to_addrs )
+ do_ready from_addr, to_addrs.flatten
@command.write_mail mailsrc, nil
end
+
alias sendmail send_mail
- def ready( from_addr, to_addrs, &block )
- do_ready from_addr, to_addrs
+ def ready( from_addr, *to_addrs, &block )
+ do_ready from_addr, to_addrs.flatten
@command.write_mail nil, block
end
@@ -111,7 +118,9 @@ module Net
def do_ready( from_addr, to_addrs )
- to_addrs = [to_addrs] if String === to_addrs
+ if to_addrs.empty? then
+ raise ArgumentError, 'mail destination does not given'
+ end
@command.mailfrom from_addr
@command.rcpt to_addrs
@command.data
@@ -119,12 +128,10 @@ module Net
def do_start( helodom = nil,
user = nil, secret = nil, authtype = nil )
+ helodom ||= ::Socket.gethostname
unless helodom then
- helodom = ::Socket.gethostname
- unless helodom then
- raise ArgumentError,
- "cannot get localhost name; try 'smtp.start(local_host_name)'"
- end
+ raise ArgumentError,
+ "cannot get localhost name; try 'smtp.start(local_host_name)'"
end
begin
@@ -234,13 +241,11 @@ module Net
getok 'DATA', ContinueCode
end
-
def write_mail( mailsrc, block )
@socket.write_pendstr mailsrc, block
check_reply SuccessCode
end_critical
end
- alias sendmail write_mail
def quit
@@ -276,7 +281,6 @@ module Net
def read_reply
arr = []
-
while true do
str = @socket.readline
break unless str[3] == ?- # ex: "210-..."
@@ -284,7 +288,7 @@ module Net
end
arr.push str
- return arr
+ arr
end
end