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クライアントのデフォルトインストール先の設定がちゃんと入っていることが前提です。