HTAでLotusNotesメールを送信する

HTA(HTML Application)でLotusNotesメールを自動的に送信するツールのサンプルを作成しました.VBScriptでNotesSesionオブジェクトを生成してメールを送信する方法に関してはプログラム学習室 Lotus Notes : IEからNotesメールを送るVBScriptを参考にしました.

サンプルでは最小限のコードで記載していますので,デザインを良くしたければ適当にCSSを組み込んでもらえれば良いですし,もっと動的に文言を追加したければ,JavaScriptを使ってラジオボタンの値を取得したり,チェックボックスの値を取得したりするといろいろ拡張できると思います.

そんなことでフロントエンド処理:midF1()がポイントで,このフロントエンドでTo/Subject/Bodyを加工できるようにしています.あくまでメール送信メイン処理は3引数を受け取ってそれを送信するだけにしてあります.処理を増やしたい場合はmidF2()などとインクリメントしていけば整理もしやすい気がします.

個人的にプロジェクト内で定常的に送信したりする連絡メールを毎回作成するのは非効率だと思っているので,こういう一工夫でプロジェクト全体が効率化されるのであれば,やりがいのある暇潰しですよね.

インタフェース

サンプルコード(HTAにする場合.htaで保存する)

<html>
<head>
	<title>NotesMail</title>
	<script language="VBScript">
		Sub Window_onLoad
			window.resizeTo 400,400
		End Sub
		
		//
		// F1フロントエンド処理
		//
		Sub midF1()
			Dim tmpTo
			Dim tmpSubject
			Dim tmpBody
			tmpTo      = document.kakku.F1_TO.value
			tmpSubject = document.kakku.F1_SUBJECT.value
	 		tmpBody    = document.kakku.F1_BODY.value
			SendMail tmpTo, tmpSubject, tmpBody
		End Sub
		
		//
		// メール送信メイン処理
		//
		Sub SendMail(argTo, argSubject, argBody)

			Dim intRet
			intRet = MsgBox("送信しますか?", 4, "Stop")

			If intRet = 7 then
				Exit Sub
			End If

			Dim objSess
			Dim objDB
			Dim objDoc

			Set objSess = CreateObject("Notes.NotesSession")
			Set objDb = objSess.GETDATABASE("", "")
			Call objDb.OPENMAIL
			Set objDoc = objDb.CREATEDOCUMENT

	
			objDoc.Sendto  = argTo
			objDoc.Subject = argSubject
			objDoc.Body    = argBody
			Call objDoc.Send(False)
			MsgBox "メールを送信しました"

			Set objSess = Nothing
			Set objDB   = Nothing
			Set objDoc  = Nothing
 		End Sub
	</script>
</head>
<body>
	<form name="kakku">
	<!-- FreeMail Start -->
	FreeMail<br />
	<input type="button" value="Send!" onClick="midF1()">
	<table border="1" cellspacing="0" cellpadding="0" >
		<tbody>
			<tr>
			<td>To</td>
			<td><input type="text" name="F1_TO" value="" style="width:100%"></td>
			</tr>
			<tr>
			<td>Subject</td>
			<td><input type="text" name="F1_SUBJECT" value="" style="width:100%"></td>
			</tr>
			<tr>
			<td>Body</td>
			<td><textarea name="F1_BODY" rows="10" cols="34" value=""></textarea></td>
			</tr>
		</tbody>
	</table>
	<!-- FreeMail End -->
	</form>
</body>
</html>