aliases: Net::SMTPSession
要約
SMTP のセッションを表現したクラスです。
目次
- 特異メソッド
- インスタンスメソッド
-
- address
- auth_cram_md5
- auth_login
- auth_plain
- authenticate
- capable_auth_types
- capable_cram_md5_auth?
- capable_login_auth?
- capable_plain_auth?
- capable_starttls?
- data
- debug_output=
- disable_ssl
- disable_starttls
- disable_tls
- ehlo
- enable_ssl
- enable_starttls
- enable_starttls_auto
- enable_tls
- esmtp
- esmtp=
- esmtp?
- finish
- helo
- inspect
- mailfrom
- open_message_stream
- open_timeout
- open_timeout=
- port
- quit
- rcptto
- rcptto_list
- read_timeout
- read_timeout=
- ready
- rset
- send_mail
- send_message
- sendmail
- set_debug_output
- ssl?
- start
- started?
- starttls
- starttls?
- starttls_always?
- starttls_auto?
- tls?
- 定数
特異メソッド
default_port -> Integer
[permalink][rdoc][edit]-
SMTPのデフォルトのポート番号(25)を返します。
default_ssl_context -> OpenSSL::SSL::SSLContext
[permalink][rdoc][edit]-
SSL 通信に使われる SSL のコンテキストのデフォルト値を返します。
default_tls_port -> Integer
[permalink][rdoc][edit]default_ssl_port -> Integer
-
デフォルトのSMTPSのポート番号(465)を返します。
default_submission_port -> Integer
[permalink][rdoc][edit]-
デフォルトのサブミッションポート番号(587)を返します。
new(address, port = Net::SMTP.default_port) -> Net::SMTP
[permalink][rdoc][edit]-
新しい SMTP オブジェクトを生成します。 address はSMTPサーバーのFQDNで、 port は接続するポート番号です。ただし、このメソッドではまだTCPの接続はしません。 Net::SMTP#start で接続します。
オブジェクトの生成と接続を同時にしたい場合には Net::SMTP.start を代わりに使ってください。
- [PARAM] address:
- 接続先のSMTPサーバの文字列
- [PARAM] port:
- 接続ポート番号
[SEE_ALSO] Net::SMTP.start, Net::SMTP#start
start(address, port = Net::SMTP.default_port, tls_verify: true, tls_hostname: nil, helo: 'localhost', user: nil, password: nil, authtype: DEFAULT_AUTH_TYPE) -> Net::SMTP
[permalink][rdoc][edit]start(address, port = Net::SMTP.default_port, tls_verify: true, tls_hostname: nil, helo: 'localhost', user: nil, password: nil, authtype: DEFAULT_AUTH_TYPE) {|smtp| ... } -> object
start(address, port = Net::SMTP.default_port, helo = 'localhost', user = nil, password = nil, authtype = DEFAULT_AUTH_TYPE) -> Net::SMTP
start(address, port = Net::SMTP.default_port, helo = 'localhost', user = nil, password = nil, authtype = DEFAULT_AUTH_TYPE) {|smtp| .... } -> object
-
新しい SMTP オブジェクトを生成し、サーバに接続し、セッションを開始します。
以下と同じです。
require 'net/smtp' Net::SMTP.new(address, port).start(helo: helo, user: user, password: password, authtype: authtype)
このメソッドにブロックを与えた場合には、新しく作られた Net::SMTP オブジェクトを引数としてそのブロックを呼び、ブロック終了時に自動的に接続を閉じます。ブロックを与えなかった場合には新しく作られた Net::SMTP オブジェクトが返されます。この場合終了時に Net::SMTP#finish を呼ぶのは利用者の責任となります。
user と password の両方が与えられた場合、 SMTP AUTH コマンドによって認証を行います。 authtype は使用する認証のタイプで、シンボルで :plain, :login, :cram_md5 を指定します。
Example:
require 'net/smtp' Net::SMTP.start('smtp.example.com') {|smtp| smtp.send_message mail_string, 'from@example.jp', 'to@example.jp' }
- [PARAM] address:
- 接続するサーバをホスト名もしくはIPアドレスで指定します
- [PARAM] port:
- ポート番号、デフォルトは 25 です
- [PARAM] tls_verify:
- サーバー証明書を検証するか否か
- [PARAM] tls_hostname:
- サーバー証明書のホスト名
- [PARAM] helo:
- HELO で名乗るドメイン名です
- [PARAM] user:
- 認証で使うアカウント名
- [PARAM] password:
- 認証で使うパスワード
- [PARAM] authtype:
- 認証の種類(:plain, :login, :cram_md5 のいずれか)
- [EXCEPTION] TimeoutError:
- 接続時にタイムアウトした場合に発生します
- [EXCEPTION] Net::SMTPUnsupportedCommand:
- TLSをサポートしていないサーバでTLSを使おうとした場合に発生します
- [EXCEPTION] Net::SMTPServerBusy:
- SMTPエラーコード420,450の場合に発生します
- [EXCEPTION] Net::SMTPSyntaxError:
- SMTPエラーコード500の場合に発生します
- [EXCEPTION] Net::SMTPFatalError:
- SMTPエラーコード5xxの場合に発生します
[SEE_ALSO] Net::SMTP#start, Net::SMTP.new
インスタンスメソッド
address -> String
[permalink][rdoc][edit]-
接続先のアドレスを返します。
auth_cram_md5(user, secret) -> ()
[permalink][rdoc][edit]-
CRAM-MD5 認証を行います。
このメソッドはセッション開始(Net::SMTP#start)後、メールを送る前に呼びだしてください。
通常は Net::SMTP.start や Net::SMTP#start で認証を行うためこれを利用する必要はないはずです。
- [PARAM] user:
- 認証で使うアカウント名
- [PARAM] secret:
- 認証で使うパスワード
auth_login(user, secret) -> ()
[permalink][rdoc][edit]-
LOGIN 認証を行います。
このメソッドはセッション開始(Net::SMTP#start)後、メールを送る前に呼びだしてください。
通常は Net::SMTP.start や Net::SMTP#start で認証を行うためこれを利用する必要はないはずです。
- [PARAM] user:
- 認証で使うアカウント名
- [PARAM] secret:
- 認証で使うパスワード
auth_plain(user, secret) -> ()
[permalink][rdoc][edit]-
PLAIN 認証を行います。
このメソッドはセッション開始(Net::SMTP#start)後、メールを送る前に呼びだしてください。
通常は Net::SMTP.start や Net::SMTP#start で認証を行うためこれを利用する必要はないはずです。
- [PARAM] user:
- 認証で使うアカウント名
- [PARAM] secret:
- 認証で使うパスワード
authenticate(user, secret, authtype) -> ()
[permalink][rdoc][edit]-
認証を行います。
このメソッドはセッション開始(Net::SMTP#start)後、メールを送る前に呼びだしてください。
通常は Net::SMTP.start や Net::SMTP#start で認証を行うためこれを利用する必要はないはずです。
- [PARAM] user:
- 認証で使うアカウント名
- [PARAM] secret:
- 認証で使うパスワード
- [PARAM] authtype:
- 認証の種類(:plain, :login, :cram_md5 のいずれか)
[SEE_ALSO] Net::SMTP.start, Net::SMTP#start, Net::SMTP#auth_plain, Net::SMTP#auth_login, Net::SMTP#auth_cram_md5
capable_auth_types -> [String]
[permalink][rdoc][edit]-
接続したサーバで利用可能な認証を配列で返します。
返り値の配列の要素は、 'PLAIN', 'LOGIN', 'CRAM-MD5' です。
このメソッドは Net::SMTP#start などでセッションを開始した以降にしか正しい値を返しません。
capable_cram_md5_auth? -> bool
[permalink][rdoc][edit]-
サーバが AUTH CRAM-MD5 を広告してきた場合に真を返します。
このメソッドは Net::SMTP#start などでセッションを開始した以降にしか正しい値を返しません。
capable_login_auth? -> bool
[permalink][rdoc][edit]-
サーバが AUTH LOGIN を広告してきた場合に真を返します。
このメソッドは Net::SMTP#start などでセッションを開始した以降にしか正しい値を返しません。
capable_plain_auth? -> bool
[permalink][rdoc][edit]-
サーバが AUTH PLAIN を広告してきた場合に真を返します。
このメソッドは Net::SMTP#start などでセッションを開始した以降にしか正しい値を返しません。
capable_starttls? -> bool
[permalink][rdoc][edit]-
サーバが STARTTLS を広告してきた場合に真を返します。
このメソッドは Net::SMTP#start などでセッションを開始した以降にしか正しい値を返しません。
data(message) -> Net::SMTP::Response
[permalink][rdoc][edit]data {|f| .... } -> Net::SMTP::Response
-
DATA コマンドを送ります。
文字列を引数に与えた場合はそれを本文として送ります。ブロックを与えた場合にはそのブロックにストリームオブジェクトが渡されます (Net::SMTP#open_message_stream参考)。
通常は Net::SMTP#send_message, Net::SMTP#open_message_stream で DATA が送られるため利用する必要はないはずです。
- [PARAM] message:
- メールの本文
set_debug_output(f) -> ()
[permalink][rdoc][edit]debug_output=(f)
-
デバッグ出力の出力先を指定します。このメソッドは深刻なセキュリティホールの原因となりえます。デバッグ用にのみ利用してください。
- [PARAM] f:
- デバッグ出力先を IO (もしくは << というメソッドを持つクラス)で指定します
disable_ssl -> ()
[permalink][rdoc][edit]disable_tls -> ()
-
その Net::SMTP オブジェクトが SMTPS を利用しないよう設定します。
[SEE_ALSO] Net::SMTP#disable_tls, Net::SMTP#tls?
disable_starttls -> ()
[permalink][rdoc][edit]-
その Net::SMTP オブジェクトがSTARTTLSを常に使わないよう設定します。
[SEE_ALSO] Net::SMTP#starttls?, Net::SMTP#enable_starttls, Net::SMTP#enable_starttls_auto
ehlo(domain) -> Net::SMTP::Response
[permalink][rdoc][edit]-
EHLO コマンドを送ります(ESMTP を使います)。
通常は Net::SMTP.start, Net::SMTP#start で EHLO が送られるため利用する必要はないはずです。
- [PARAM] domain:
- EHLOで送るドメイン名
enable_ssl(context = Net::SMTP.default_ssl_context) -> ()
[permalink][rdoc][edit]enable_tls(context = Net::SMTP.default_ssl_context) -> ()
-
その Net::SMTP オブジェクトが SMTPS を利用するよう設定します。
このメソッドは Net::SMTP#start を呼ぶ前に呼ぶ必要があります。
- [PARAM] context:
- SSL接続で利用する OpenSSL::SSL::SSLContext
[SEE_ALSO] Net::SMTP#tls?, Net::SMTP#disable_tls
enable_starttls(context = Net::SMTP.default_ssl_context) -> ()
[permalink][rdoc][edit]-
その Net::SMTP オブジェクトが 常にSTARTTLSを利用する (利用できない場合には例外を発生する)ように設定します。
- [PARAM] context:
- SSL接続で利用する OpenSSL::SSL::SSLContext
[SEE_ALSO] Net::SMTP#starttls?, Net::SMTP#starttls_always?, Net::SMTP#enable_starttls_auto
enable_starttls_auto(context = Net::SMTP.default_ssl_context) -> ()
[permalink][rdoc][edit]-
その Net::SMTP オブジェクトがSTARTTLSが利用可能な場合 (つまりサーバがSTARTTLSを広告した場合)のみにSTARTTLSを利用するように設定します。
[SEE_ALSO] Net::SMTP#starttls?, Net::SMTP#starttls_auto?, Net::SMTP#enable_starttls_auto
- [PARAM] context:
- SSL接続で利用する OpenSSL::SSL::SSLContext
[SEE_ALSO] Net::SMTP#starttls?, Net::SMTP#starttls_auto?, Net::SMTP#enable_starttls
esmtp? -> bool
[permalink][rdoc][edit]esmtp -> bool
-
その Net::SMTP オブジェクトが ESMTP を使う場合に真を返します。デフォルトは真です。
[SEE_ALSO] Net::SMTP#esmtp=
esmtp=(bool)
[permalink][rdoc][edit]-
その Net::SMTP オブジェクトが ESMTP を使うかどうかを指定します。
この指定は Net::SMTP#start を呼ぶ前にする必要があります。 ESMTPモードで Net::SMTP#start を呼び、うまくいかなかった場合には 普通の SMTP モードに切り替えてやりなおします (逆はしません)。
[SEE_ALSO] Net::SMTP#esmtp?
finish -> ()
[permalink][rdoc][edit]-
SMTP セッションを終了します。
- [EXCEPTION] IOError:
- セッション開始前にこのメソッドが呼ばれた場合に発生します
[SEE_ALSO] Net::SMTP#start
helo(domain) -> Net::SMTP::Response
[permalink][rdoc][edit]-
HELO コマンドを送ります(標準的な SMTP を使います)。
通常は Net::SMTP.start, Net::SMTP#start で HELO が送られるため利用する必要はないはずです。
- [PARAM] domain:
- HELOで送るドメイン名
inspect -> String
[permalink][rdoc][edit]-
[SEE_ALSO] Object#inspect
mailfrom(from_addr) -> Net::SMTP::Response
[permalink][rdoc][edit]-
MAILFROM コマンドを送ります。
通常は Net::SMTP#send_message, Net::SMTP#open_message_stream で MAILFROM が送られるため利用する必要はないはずです。
- [PARAM] from_addr:
- 送信元メールアドレス
open_message_stream(from_addr, *to_addrs) {|f| .... } -> ()
[permalink][rdoc][edit]ready(from_addr, *to_addrs) {|f| .... } -> ()
-
メール書き込みの準備をし、書き込み先のストリームオブジェクトをブロックに渡します。ブロック終了後、書きこんだ結果が送られます。
渡されるストリームオブジェクトは以下のメソッドを持っています。
- puts(str = '') strを出力して CR LFを出力
- print(str) strを出力
- printf(fmt, *args) sprintf(fmt,*args) を出力
- write(str):: str を出力して書き込んだバイト数を返す
- <<(str):: str を出力してストリームオブジェクト自身を返す
from_domain は送り主のメールアドレス ('...@...'のかたち) 、 to_addrs には送信先メールアドレスを文字列で渡します。
require 'net/smtp' Net::SMTP.start('smtp.example.com', 25) {|smtp| smtp.open_message_stream('from@example.com', 'to@example.net') {|f| f.puts 'From: from@example.com' f.puts 'To: to@example.net' f.puts 'Subject: test mail' f.puts f.puts 'This is test mail.' } }
ready は obsolete です。
- [PARAM] from_addr:
- 送信元のメールアドレス
- [PARAM] to_addrs:
- 送信先のメールアドレス(複数可、少なくとも1個)
- [EXCEPTION] IOError:
- すでにセッションが終了している場合に発生します
- [EXCEPTION] TimeoutError:
- 接続がタイムアウトした場合に発生します
- [EXCEPTION] Net::SMTPServerBusy:
- SMTPエラーコード420,450の場合に発生します
- [EXCEPTION] Net::SMTPSyntaxError:
- SMTPエラーコード500の場合に発生します
- [EXCEPTION] Net::SMTPFatalError:
- SMTPエラーコード5xxの場合に発生します
- [EXCEPTION] Net::SMTPAuthenticationError:
- 送信に必要な認証を行っていなかった場合に発生します
- [EXCEPTION] Net::SMTPUnknownError:
- SMTPエラーコードがプロトコル上不正な場合に発生します
[SEE_ALSO] Net::SMTP#send_message
open_timeout -> Integer
[permalink][rdoc][edit]-
接続時に待つ最大秒数を返します。
デフォルトは30(秒)です。この秒数たってもコネクションが開かなければ例外 TimeoutError を発生します。
[SEE_ALSO] Net::SMTP#open_timeout=
open_timeout=(n)
[permalink][rdoc][edit]-
接続時に待つ最大秒数を設定します。
[SEE_ALSO] Net::SMTP#open_timeout
port -> Integer
[permalink][rdoc][edit]-
接続先のポート番号を返します。
quit -> Net::SMTP::Response
[permalink][rdoc][edit]-
QUIT コマンドを送ります。
通常は Net::SMTP#finish で QUIT が送られるため利用する必要はないはずです。
rcptto(to_addr) -> Net::SMTP::Response
[permalink][rdoc][edit]-
RCPTTO コマンドを送ります。
通常は Net::SMTP#send_message, Net::SMTP#open_message_stream で RCPTTO が送られるため利用する必要はないはずです。
- [PARAM] to_addr:
- 送信先メールアドレス
rcptto_list(to_addrs) { ... } -> object
[permalink][rdoc][edit]-
RCPTTO コマンドを to_addrs のすべてのメールアドレスに対して送ります。
コマンドを送った後、ブロックを呼び出します。このメソッドの返り値はブロックの返り値になります。
通常は Net::SMTP#send_message, Net::SMTP#open_message_stream で RCPTTO が送られるため利用する必要はないはずです。
- [PARAM] to_addrs:
- 送信先メールアドレスの配列
read_timeout -> Integer
[permalink][rdoc][edit]-
読みこみ (read(2) 一回) でブロックしてよい最大秒数を返します。
デフォルトは60(秒)です。この秒数たっても読みこめなければ例外 TimeoutError を発生します。
[SEE_ALSO] Net::SMTP#read_timeout=
read_timeout=(n)
[permalink][rdoc][edit]-
読み込みでブロックしてよい最大秒数を設定します。
[SEE_ALSO] Net::SMTP#read_timeout
rset -> Net::SMTP::Response
[permalink][rdoc][edit]-
RSET コマンドを送ります。
send_message(mailsrc, from_addr, *to_addrs) -> ()
[permalink][rdoc][edit]send_mail(mailsrc, from_addr, *to_addrs) -> ()
sendmail(mailsrc, from_addr, *to_addrs) -> ()
-
メールを送信します。
mailsrc をメールとして送信します。 mailsrc は each イテレータを持つオブジェクトならなんでも構いません(たとえば String や File)。
from_domain は送り主のメールアドレス ('...@...'のかたち) 、 to_addrs には送信先メールアドレスを文字列で渡します。
require 'net/smtp' Net::SMTP.start('smtp.example.com') {|smtp| smtp.send_message mail_string, 'from@example.com', 'to1@example.net', 'to2@example.net' }
sendmail は obsolete です。
- [PARAM] mailsrc:
- メールの内容
- [PARAM] from_addr:
- 送信元のメールアドレス
- [PARAM] to_addrs:
- 送信先のメールアドレス(複数可、少なくとも1個)
- [EXCEPTION] IOError:
- すでにセッションが終了している場合に発生します
- [EXCEPTION] TimeoutError:
- 接続がタイムアウトした場合に発生します
- [EXCEPTION] Net::SMTPServerBusy:
- SMTPエラーコード420,450の場合に発生します
- [EXCEPTION] Net::SMTPSyntaxError:
- SMTPエラーコード500の場合に発生します
- [EXCEPTION] Net::SMTPFatalError:
- SMTPエラーコード5xxの場合に発生します
- [EXCEPTION] Net::SMTPUnknownError:
- SMTPエラーコードがプロトコル上不正な場合に発生します
tls? -> bool
[permalink][rdoc][edit]ssl? -> bool
-
その Net::SMTP オブジェクトが SMTPS を利用するならば真を返します。
[SEE_ALSO] Net::SMTP#enable_tls, Net::SMTP#disable_tls, Net::SMTP#start
start(helo: 'localhost', user: nil, password: nil, authtype: DEFAULT_AUTH_TYPE) -> Net::SMTP
[permalink][rdoc][edit]start(helo: 'localhost', user: nil, password: nil, authtype: DEFAULT_AUTH_TYPE) {|smtp| ... } -> object
start(helo = 'localhost', user = nil, password = nil, authtype = DEFAULT_AUTH_TYPE) -> Net::SMTP
start(helo = 'localhost', user = nil, password = nil, authtype = DEFAULT_AUTH_TYPE) {|smtp| .... } -> object
-
サーバにコネクションを張り、同時に SMTP セッションを開始します。
もしすでにセッションが開始していたら IOError が発生します。
user と password の両方が与えられた場合、 SMTP AUTH コマンドによって認証を行います。 authtype は使用する認証のタイプで、シンボルで :plain, :login, :cram_md5 を指定します。
このメソッドにブロックを与えた場合には、そのオブジェクトを引数としてそのブロックを呼び、ブロック終了時に自動的に接続を閉じます。ブロックを与えなかった場合には自分自身を返します。この場合終了時に Net::SMTP#finish を呼ぶのは利用者の責任となります。
- [PARAM] helo:
- HELO で名乗るドメイン名です
- [PARAM] user:
- 認証で使うアカウント名
- [PARAM] password:
- 認証で使うパスワード
- [PARAM] authtype:
- 認証の種類(:plain, :login, :cram_md5 のいずれか)
- [EXCEPTION] IOError:
- すでにセッションを開始している場合に発生します
- [EXCEPTION] TimeoutError:
- 接続がタイムアウトした場合に発生します
- [EXCEPTION] Net::SMTPUnsupportedCommand:
- STARTTLSをサポートしていないサーバでSTARTTLSを利用しようとした場合に発生します
- [EXCEPTION] Net::SMTPServerBusy:
- SMTPエラーコード420,450の場合に発生します
- [EXCEPTION] Net::SMTPSyntaxError:
- SMTPエラーコード500の場合に発生します
- [EXCEPTION] Net::SMTPFatalError:
- SMTPエラーコード5xxの場合に発生します
started? -> bool
[permalink][rdoc][edit]-
SMTP セッションが開始されていたら真を返します。
セッションがまだ開始していない、もしくは終了している場合には偽を返します。
[SEE_ALSO] Net::SMTP#start, Net::SMTP#finish
starttls -> Net::SMTP::Response
[permalink][rdoc][edit]-
STARTTLS コマンドを送ります。
通常は Net::SMTP#start で STARTTLS が送られるため利用する必要はないはずです。
starttls? -> Symbol/nil
[permalink][rdoc][edit]-
その Net::SMTP オブジェクトが STARTTLSを利用するかどうかを返します。
常に利用する(利用できないときは Net::SMTP#start で例外 Net::SMTPUnsupportedCommand を発生) するときは :always を、利用可能な場合のみ利用する場合は :auto を、常に利用しない場合には nil を返します。
[SEE_ALSO] Net::SMTP#start
starttls_always? -> bool
[permalink][rdoc][edit]-
その Net::SMTP オブジェクトが 常にSTARTTLSを利用する (利用できない場合には例外を発生する)ならば真を返します。
[SEE_ALSO] Net::SMTP#starttls?, Net::SMTP#starttls_auto?, Net::SMTP#enable_starttls
starttls_auto? -> bool
[permalink][rdoc][edit]-
その Net::SMTP オブジェクトが利用可能な場合にのみにSTARTTLSを利用するならば真を返します。
[SEE_ALSO] Net::SMTP#starttls?, Net::SMTP#starttls_always?, Net::SMTP#enable_starttls_auto
定数
DEFAULT_AUTH_TYPE -> Symbol
[permalink][rdoc][edit]-
デフォルトの認証スキーム(:plain)です。
Revision -> String
[permalink][rdoc][edit]-
ファイルのリビジョンです。使わないでください。