2025/06/30

LotusScript でメール送信 ② - フォームの送信とは?

前回は、LotusScript でメールを送信する基本的な方法を紹介しました。今回はその続きなのですが、テーマは構文の最初の引数 attachForm です。

Call notesDocument .Send( attachForm [, recipients ] )

1 attachForm BooleanTrue:フォームを送信
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 年前からフツウに実現できていました。ノーツってすごいですよね。


0 件のコメント:

コメントを投稿