EEM SMTP ライブラリのコマンド拡張

すべてのシンプル メール転送プロトコル(SMTP)ライブラリ コマンドは、::cisco::lib 名前空間に属します。

このライブラリを使用するには、ユーザーは、電子メール テンプレート ファイルを用意する必要があります。テンプレートファイルに Tcl グローバル変数を含めると、event manager environment Cisco IOS コマンドライン インターフェイス(CLI)コンフィギュレーション コマンドを使用して電子メールサービスと電子メールテキストを設定できるようになります。電子メール テンプレート ファイルでグローバル変数を置き換え、設定された電子メール サーバーを使用して、設定された To アドレス、CC アドレス、From アドレス、および Subject 行プロパティで必要な電子メール コンテキストを送信するには、このライブラリにあるコマンドを使用します。

電子メール テンプレート

電子メール テンプレート ファイルの形式は、次のとおりです。


Note


RFC 2554 に基づき、SMTP 電子メール サーバー名 Mailservername には、username:password@host、username@host、または host のテンプレート形式のいずれか 1 つを使用できます。



Mailservername:<space><the list of candidate SMTP server addresses>
From:<space><the e-mail address of sender>
To:<space><the list of e-mail addresses of recipients>
Cc:<space><the list of e-mail addresses that the e-mail will be copied to>
Sourceaddr:<space><the IP addresses of the recipients>
Subject:<subject line>
<a blank line>
<body>

Note


テンプレートには、通常、設定のための Tcl グローバル変数が含まれていることに注意してください。


Tcl ポリシーでは、電子メール テンプレートの「Port」行でポート番号を指定できます。ポートを指定しなかった場合、デフォルトのポート 25 が使用されます。

次に、サンプル E メール テンプレート ファイルを挙げます。


Mailservername: $_email_server
From: $_email_from
To: $_email_to
Cc: $_email_cc
Sourceaddr: $_email_ipaddr
Port: <port number>
Subject: From router $routername: Process terminated
process name: $process_name
subsystem: $sub_system
exit status: $exit_status
respawn count: $respawn_count

smtp_send_email

電子メール テンプレート ファイルのテキストが、すべてのグローバル変数ですでに置き換えられている場合、シンプル メール転送プロトコル(SMTP)を使用して電子メールを送信します。電子メール テンプレートによって、候補メール サーバーのアドレス、To アドレス、CC アドレス、From アドレス、件名の行、および電子メールの本文が指定されます。


Note


ライブラリが、リストにあるサーバーの 1 つに接続できるまで、サーバーへの接続が、1 つ 1 つ試行されるよう、候補電子メール サーバーのリストを用意できます。


構文


smtp_send_email text

引数

text

(必須)すべてのグローバル変数ですでに置き換えられた、E メール テンプレート ファイルのテキスト。

結果文字列

なし

_cerrno を設定

  • 1 行目の形式が間違っている:Mailservername:サーバー名のリスト。

  • 2 行目の形式が間違っている:From:送信元アドレス。

  • 3 行目の形式が間違っている:To:送信先アドレスのリスト。

  • 4 行目の形式が間違っている:CC:コピー送信先アドレスのリスト。

  • メール サーバーへの接続エラー:リモート サーバーによって $sock が閉じられている($sock はメール サーバーに開かれているソケットの名前)。

  • メール サーバーへの接続エラー:$sock 応答コードが service ready greeting ではなく $k である($sock はメール サーバーに開かれているソケットの名前、$k は $sock の応答コード)。

  • メール サーバーへの接続エラー:すべてのメール サーバー候補に接続できない。

  • メール サーバーからの接続解除エラー:リモート サーバーによって $sock が閉じられている($sock はメール サーバーに開かれているソケットの名前)。

サンプル スクリプト

電子メール テンプレートですべての必要なグローバル変数が定義された後には、次のようになります。


    if [catch {smtp_subst [file join $tcl_library email_template_sm]} result] {
        puts stderr $result
        exit 1
    }
    if [catch {smtp_send_email $result} result] {
        puts stderr $result
        exit 1
    }

smtp_subst

電子メール テンプレート ファイル e-mail_template の場合、ファイルにある各グローバル変数を、そのユーザー定義値によって置き換えます。置換後に、ファイルのテキストを返します。

構文


smtp_subst e-mail_template

引数

e-mail_template

(必須)グローバル変数が、ユーザー定義値によって置き換えられる必要がある、電子メール テンプレート ファイルの名前。ファイル名の例は /disk0://example.template で、スロット 0 の ATA フラッシュ ディスクの上位レベル ディレクトリにある example.template という名前のファイルを表します。

結果文字列

すべてのグローバル変数で置き換えられた、電子メール テンプレート ファイルのテキスト。

_cerrno を設定

  • 電子メール テンプレート ファイルを開けられない。

  • 電子メール テンプレート ファイルを閉じられない。