diff options
Diffstat (limited to 'doc/net/smtp.rd.ja')
-rw-r--r-- | doc/net/smtp.rd.ja | 49 |
1 files changed, 35 insertions, 14 deletions
diff --git a/doc/net/smtp.rd.ja b/doc/net/smtp.rd.ja index 3484e61ccb..60aa9ef47c 100644 --- a/doc/net/smtp.rd.ja +++ b/doc/net/smtp.rd.ja @@ -20,7 +20,7 @@ SMTP を使ってメールを送るにはまず SMTP.start でセッションを開きます。 require 'net/smtp' Net::SMTP.start( 'your.smtp.server', 25 ) {|smtp| - # use smtp object only in this block + # use smtp object only in this block } your.smtp.server は適切な SMTP サーバのアドレスに読みかえてください。 @@ -31,7 +31,7 @@ your.smtp.server は適切な SMTP サーバのアドレスに読みかえてください。 require 'net/smtp' Net::SMTP.start( 'your.smtp.server', 25 ) {|smtp| - smtp.send_mail <<EndOfMail, 'your@mail.address', 'to@some.domain' + smtp.send_mail <<EndOfMail, 'your@mail.address', 'to@some.domain' From: Your Name <your@mail.address> To: Dest Address <to@some.domain> Subject: test mail @@ -42,6 +42,27 @@ your.smtp.server は適切な SMTP サーバのアドレスに読みかえてください。 EndOfMail } +=== セッションを終了する + +メールを送ったら SMTP#finish を呼んでセッションを終了しなければいけ +ません。File のように GC 時に勝手に close されることもありません。 +いろいろなところで finish がないソースコードの例を見掛けますが、 +すべて誤りです。finish は必ず呼んでください。 + +またブロック付きの SMTP.start/SMTP#start を使うと勝手に finish を +呼んでくれるので便利です。可能な限りブロック付きの start を使うのが +よいでしょう。 + + # using SMTP#finish + smtp = Net::SMTP.start( 'your.smtp.server', 25 ) + smtp.send_mail mail_string, 'from@address', 'to@address' + smtp.finish + + # using block form of SMTP.start + Net::SMTP.start( 'your.smtp.server', 25 ) {|smtp| + smtp.send_mail mail_string, 'from@address', 'to@address' + } + === 文字列以外からの送信 ひとつ上の例では文字列リテラル(ヒアドキュメント)を使って送信しましたが、 @@ -50,9 +71,9 @@ each メソッドを持ったオブジェクトからならなんでも送ることができます。 require 'net/smtp' Net::SMTP.start( 'your.smtp.server', 25 ) {|smtp| - File.open( 'Mail/draft/1' ) {|f| - smtp.send_mail f, 'your@mail.address', 'to@some.domain' - } + File.open( 'Mail/draft/1' ) {|f| + smtp.send_mail f, 'your@mail.address', 'to@some.domain' + } } === Hello ドメイン @@ -82,7 +103,7 @@ SMTP ではメールを送る側のホストの名前を要求されるのですが、 # example Net::SMTP.start( 'your.smtp.server' ) { - smtp.send_mail mail_string, 'from@mail.address', 'dest@mail.address' + smtp.send_mail mail_string, 'from@mail.address', 'dest@mail.address' } === メソッド @@ -128,9 +149,9 @@ SMTP ではメールを送る側のホストの名前を要求されるのですが、 # example Net::SMTP.start( 'your.smtp.server' ) {|smtp| - smtp.send_mail mail_string, - 'from@mail.address', - 'dest@mail.address' 'dest2@mail.address' + smtp.send_mail mail_string, + 'from@mail.address', + 'dest@mail.address' 'dest2@mail.address' } : ready( from_addr, *to_addrs ) {|adapter| .... } @@ -140,11 +161,11 @@ SMTP ではメールを送る側のホストの名前を要求されるのですが、 # example Net::SMTP.start( 'your.smtp.server', 25 ) {|smtp| - smtp.ready( 'from@mail.addr', 'dest@mail.addr' ) do |adapter| - adapter.write str1 - adapter.write str2 - adapter.write str3 - end + smtp.ready( 'from@mail.addr', 'dest@mail.addr' ) do |adapter| + adapter.write str1 + adapter.write str2 + adapter.write str3 + end } == 発生する例外 |