2025/05/10

@MailSend の動作 ①

Notes アプリ開発とメールの送信は切っても切れない関係といえますね。今回は、式言語でメールを送信する @MailSend について紹介します。


構文

ヘルプによると @MailSend の構文は次のように、引数のあり/なしの 2 通りあります。

@MailSend

@MailSend( sendTo ; copyTo ; blindCopyTo ; subject ; remark ; bodyFields ; [ flags ] )

今回は、前者の引数なしのパターンを紹介します。


引数なしでメール送信できる訳

引数なしということは、宛先も指定しないの? と疑問がわきますが、大丈夫です。この機能は、文書内のフィールド値を使用して送信する機能となっています。

簡単なサンプルとして次のようなフォームを作成します。

フォームをプリビューして、宛先と件名を入力し、[メール送信]ボタンをクリックします。

すると、宛先に指定したユーザのメールボックスにメールが届きます。

とっても簡単ですね。そして仕組みも単純です。

@MailSend を実行する文書にある SendTo が宛先、Subject が件名として使用されます。このように、特定の役割を持ったフィールド名を予約フィールドといいます。


予約フィールド

メールの配信制御に関連する予約フィールドはヘルプに詳細が記載されています。

メールオプションを制御する予約フィールド


通常、メール送信で使用する予約フィールドをまとめると次の通りです。

予約フィールド 役割・使い方
SendTo 宛先(リスト値可)
CopyTo CC(リスト値可)
BlindCopyTo BCC(リスト値可)
Subject メールの件名
Body メールの本文
ReturnReceipt 受信者がメールを開いたとき、開封確認を送る場合 "1" を指定


すべてのフィールドを送信

@MailSend では、送信する文書内のすべてのフィールドをメールで配信されます。例えば、次のようにフィールドを 3 つ追加してメールを送信してみます。

すると届いたメールの文書プロパティでこれらフィールドが確認できます。

Notes メールは、メールとは関係ないフィールドがメール内にあっても、そのまま配信するようです。文書を丸ごと配信する感じですね。いかにもノーツらしい挙動です。


リッチテキストの送信

メールの本文(Body)フィールドはリッチテキストです。これに倣い、作成したフォームの Body フィールドをリッチテキストに変更します。文書を新規作成し、本文を記入して送信しても、届いたメールの本文は空っぽとなります。

リッチテキストは文書を保存しないと @MailSend で送信できない仕様のようです。ただ、文書を保存してから送信するとメールを開く際にエラーが発生します。

これは、送信元の Form フィールドまで含めて送信されているからです。すべてのフィールドが送信される機能の弊害と言えますね。ちなみにメール DB にあわせて、送信元のフォーム名を "Memo" としておくとこのエラーは回避できます。


まとめ

今回は @MailSend の引数なしで使用する方法を紹介しました。引数がないので@式はシンプルになりますが、フィールド名が固定されたり、フォーム名を意識したする必要がありました。また、すべてのフィールドが送信されることもあり、アプリで利用するには制限が多く、活用しづらい機能と言えます。

このような課題を解決するのが引数ありの @MailSend となります。次回、使い方を紹介します。



0 件のコメント:

コメントを投稿