Notesクライアントが停止していてもNotesメールを送る

こんにちは。

だいぶ間が空いてしまいましたが、前回と関連して。
ログオフしている状態でNotesから自動でメールを出したかったので、もちろんクライアントは起動していません。

Notesクライアントが起動していなくても、メールを送信するVBAを書いてみました。

せっかくなのでエクセルシートに記述したテンプレートを使ってメールを出しています。

Const EMBED_ATTACHMENT As Integer = 1454
Option Explicit


Public Sub SendMail()
Dim session As Object
Dim notesdir As Object
Dim Db As Object
Dim doc As Object
Dim mailitem As Object
Dim MailTo As Variant
Dim MailCc As Variant
Dim MailBcc As Variant
Dim MailSubject As Variant
Dim wkNAtt As Object
Dim MailBody As Variant
Dim line
Dim TempSheet


Set session = CreateObject("Lotus.NotesSession")
Call session.Initialize("パスワード")


Set notesdir = session.GetDbDirectory("")
Set Db = notesdir.OpenMailDatabase()
Set doc = Db.CreateDocument

Set mailitem = doc.CreateRichTextItem("Body")


MailTo = Worksheets("Sheet1").Range("C2").Value
MailCc = Worksheets("Sheet1").Range("C3").Value
MailBcc = Worksheets("Sheet1").Range("C4").Value
MailSubject = Worksheets("Sheet1").Range("C5").Value
MailBody = Worksheets("Sheet1").Range("C6:C17")


For Each line In MailBody

With mailitem
.APPENDTEXT line
.ADDNEWLINE 1
End With

Next


With mailitem
Set wkNAtt = .EmbedObject(EMBED_ATTACHMENT, "", "c:\Sample.txt")
.ADDTAB 1
.ADDNEWLINE 1
End With

Call doc.ReplaceItemValue("Subject", MailSubject)
Call doc.ReplaceItemValue("SendTo", Split(MailTo, ","))
Call doc.ReplaceItemValue("CopyTo", Split(MailCc, ","))
Call doc.ReplaceItemValue("BlindCopyTo", Split(MailBcc, ","))
Call doc.Send(False)
  
Set wkNAtt = Nothing
Set mailitem = Nothing
Set doc = Nothing
Set Db = Nothing
Set session = Nothing

End Sub


あとはこれを呼び出すVBSを書いて実行すればクライアントが起動していなくてもNotesメールを自動送信できます。
前回のエントリーと組み合わせれば、Windowsが起動している状態であれば、Notesクライアントが起動していなくても、ログオンしていなくても、メールが送信できるわけです。

注意としては、Notesクライアントのデフォルトインストール先の設定がちゃんと入っていることが前提です。


VBAエキスパート公式テキスト Excel VBA スタンダード