2025/06/24

LotusScript でメール送信 ①

先日、@関数を使用した メール送信の方法についてまとめました。

今回は LotusScript でメールを送信する方法についてまとめます。


構文

LotusScript でメールを送信するには、NotesDocument クラスの Send メソッドを使用します。まずは、構文を確認しましょう。

Call notesDocument .Send( attachForm [, recipients ] )

引数は役割は次の通りです。

1 attachForm BooleanTrue:フォームを送信
False:フォームを送信しない
2 recipients  文字列
文字列リスト
省略可能。
メールの宛先です。


一般的な使い方

Send メソッドを使用した一般的はメール送信のプログラムは次の通りです。

Sub Click(Source As Button)
   Dim ns As New NotesSession
   Dim ndb As NotesDatabase
   Dim ndMail As NotesDocument

   Set ndb = ns.CurrentDatabase

   '送信する文書を新規作成
   Set ndMail = ndb.CreateDocument

   ndMail.Form = "Memo"     'フォームを指定
   ndMail.SendTo = "Masayuki Hama/NCOsaka"    '宛先をセット
   ndMail.Subject = "LotusScript でメール送信 ①"    '件名をセット

   '本文をセット
   ndMail.Body = "これは『LotusScript でメール送信 ①』のサンプルで送信したメールです。"

   'メールを送信
   Call ndMail.Send(False)
End Sub

処理の流れは単純です。新規文書を作成して、フォーム、宛先、件名をセットします。本文はプレーンテキストでよいのであれば文字列として与えるだけで OK です。送信する内容が出来上がったら Send メソッドをコールします。

届いたメールは次の通りです。指定した宛先とメールの内容がセットされています。

基本的な動作の仕組みは、@MailSend の引数なしのパターン と同じで、SendTo など文書内の予約フィールドを利用してメールが送信されます。


ちなみに、構文に記載した通り、Send メソッドの recipients 引数で宛先を指定できます。SendTo フィールドと 2 通りの宛先指定方法が提供されています。両方が指定されている場合、recipients 引数が優先され、SendTo フィールドは無視されます。動作がわかりにくくなるのでどちらか一方になるようにしたほうがいいですね。


メール送信の動作

@関数では画面上に存在するフィールドは、メール配信に関係していなくてもメール内に保持されました。上記プログラムでは、CreateDocument でメール文書を別途生成しているので、メール配信に不必要なフィールドがメールとともに配送されることはありません。無用な漏洩を止めることができますね。

また、Send メソッドでメールを送信すると、その内容はコピーされて、サーバ上のメールルータに渡されます。よって、保存しなくてもメールが送信でき、新規作成した文書はスクリプトの終了とともに消滅します。


フォームの指定

サンプルプログラムでは、Form フィールドに "Memo" と設定していました。この設定がなくてもメールとしては正常に送信されます。しかし、届いたメールには Form フィールドが作成されません。

ただ、Form フィールドがなくてもメールは通常通りのフォームで参照できます。これは、Memo フォームがデフォルトフォームに設定されているからです。

このように、たとえ忘れていても、正しく参照できるのですが、プログラムの意図を明示する観点からも設定しておくべきです。


0 件のコメント:

コメントを投稿