JavaScriptからノーツメールを送る

VBAでLotusNotes経由のメールを送るマクロが有ったのでJavaScriptで書いてみた。

LotusNotesがインストールされているマシンなら動きます。Notesセッションを横取りしているので現在ノーツクライアントを立ち上げているユーザーで送信されることになります。
引数に以下のものを指定して呼び出してください。

  • 件名 「"テストメールです"」
  • 宛先アドレス 「"test@test.com"」
  • 本文 「"こんにちわ。\nテストメールです。"」
  • 添付ファイル ("C:\\tmp\\a.txt")
  • 送信ボックスに保存するか (false)

本文内で改行をしたい場合は\r\n等と改行コードを入れてください。
添付ファイルを付けない場合は空文字「""」をセットしてください。

呼び出し側
<script type="text/javascript">
    sendNotesMail("テストメールです",
                  "test@test.com",
                  "こんにちわ。\nテストメールです。",
                  "C:\\tmp\\a.txt",
                  false);
</script>
本体
<script type="text/javascript">
    sendNotesMail = function(subject, sendTo, bodyText, attachment, isSave) {

        //NotesSessionの生成
        var notesSession = new ActiveXObject( "Notes.NotesSession" );
        var userName = notesSession.UserName;
        var mailDbName = userName.substring(0,1) + userName.substring(userName.indexOf(" ",1) + 1 ,userName.length) + ".nsf";
        var maildb = notesSession.GETDATABASE("", mailDbName);
        if (!maildb.IsOpen) {
            maildb.OPENMAIL;
        }
        //本文の生成
        var mailDoc = maildb.CREATEDOCUMENT;
        mailDoc.Form = "Memo";
        mailDoc.sendto = sendTo;
        mailDoc.Subject = subject;
        mailDoc.Body = bodyText;
        mailDoc.SAVEMESSAGEONSEND = isSave;
        //添付ファイル
        if (attachment != "") {
            var attachME = mailDoc.CREATERICHTEXTITEM("Attachment");
            var embedObj = attachME.EMBEDOBJECT(1454, "", attachment, "Attachment");
        }
        //送信実行
        mailDoc.SEND(0, sendTo);
        //後処理
        maildb = null;
        notesSession = null;
        mailDoc = null;
        attachME = null;
        embedObj = null;
    }
</script>