前回は、LotusScript でメールを送信する基本的な方法を紹介しました。今回はその続きなのですが、テーマは構文の最初の引数 attachForm です。
Call notesDocument .Send( attachForm [, recipients ] ) |
1 | attachForm | Boolean | True:フォームを送信 False:フォームを送信しない |
2 | recipients | 文字列 文字列リスト |
省略可能。 メールの宛先です。 |
テストフォームの準備
まずは、単純なフォームを用意します。
メールの宛先と件名、本文のリッチテキストを配置します。これらのフィールド名は『@MailSend の動作 ①』で紹介した予約フィールド名で作成します。
また、フォーム下部には、テスト用にメール配信とは関係のないフィールドも配置します。
アクションボタン[メール送信]には、次の LotusScript を記述します。画面上の文書を NotesUIDocument から取得して、メール送信します。Send メソッドコール時には、今回のテーマである attachForm に True を指定しています。
Sub Click(Source As Button) Dim nuiw As New NotesUIWorkspace Dim nuid As NotesUIDocument Dim nd As NotesDocument '現在の文書を取得 Set nuid = nuiw.CurrentDocument Set nd = nuid.Document 'メールを送信 Call nd.Send(True) End Sub |
既存文書内のフィールドを利用してメールするパターンですので、前回 よりシンプルなコードになっていますね。
フォーム送信の動作
フォームが完成したらテストデータを作成して、[メール送信]ボタンをクリックします。
すると、宛先に設定したユーザにメールが届きます。そのメールを開くと、送信した文書と全く同じ画面が開きます。
その状態で、データベースのプロパティを確認するとメールボックスを指しています。メールボックス内でありながら、アプリの画面が開いていることがわかります。
このように、フォーム送信機能は、メール内にフォーム設計を含めて送信する機能です。
フォーム送信利用時の注意
届いたメール上部には[メール送信]ボタンが表示されており、クリックするとサンプルフォームと同様にメールが送信されます。このように、フォームの送信ではフォームの見た目だけでなく、アクションボタンなどの機能までもが送信されます。
また、送信されるのはフォームのみとなる点も注意が必要です。例えば、フォームがスクリプトライブラリを参照していたとします。
このフォームの文書をフォーム付きでメール送信した場合、受け取ったユーザがメールを開くと、ライブラリのロードエラーが発生します。これはメールボックス内にスクリプトライブラリが存在しないからですね。
フォーム付きでメールを送信する場合、メール DB 内で確実に表示 / 動作するよう、フォームはシンプルな構造にしておく必要があります。
まとめ
今回は、Send メソッドの attachForm 引数を使用した、フォーム付きメール送信について紹介しました。フォームに配置されているボタンなどのプログラムもメールで通知されます。また、届いたメールのプロパティを確認すると、フォーム上に配置したフィールドも配置されています。これらを利用すれば、簡単なアンケートなど、さまざまな ”機能付きメール” を実現することができることがわかりますね。
今では、HTML メールのように見た目がよく、多少の機能がついたメールは普通ですが、ノーツは 30 年前からフツウに実現できていました。ノーツってすごいですよね。