MailItem.HTMLBodyエイチティエムエルボディ プロパティ

本ページには広告が含まれています。

メールのHTML形式の本文を表す文字列型の値を取得または設定します。

HTML形式のメールを作成するにはMailItem.BodyFormat プロパティを olFormatHTMLに設定します。

構文
  1. String = MailItem.HTMLBody
  2. MailItem.HTMLBody = String
引数
戻り値
メールのHTML形式の本文を表す文字列型(String)

MailItem オブジェクトを返すメソッド・プロパティ

MailItem.HTMLBody プロパティ
Items オブジェクトからItemオブジェクトを返します。
Application.CreateItem メソッド
新しいOutlookのアイテムを表すオブジェクトを作成します。

HTMLメールの作り方

DOCTYPE宣言

まずはDOCTYPE宣言でHTMLメールのベースを作ります。

DOCTYPEは"XHTML 1.0"または"HTML 4.01"の2種類がありますが、XHTMLは廃止されたのでHTML 4.01を使用します。

HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta name="viewport" content="target-densitydpi=device-dpi,width=device-width,maximum-scale=1.0,user-scalable=yes">
	<meta http-equiv="Content-Language" content="ja">
	<meta charset="shift_jis">
	<title></title>
</head>
<body>
</body>
</html>

マークアップ

次にメールの中身を作成していきます。HTMLメールは基本的にテーブルレイアウトで作成していきます。bodyタグ直下にtableタグを記述し幅は600pxにします。この値を大きくしすぎるとスクロールが必要になり見づらくなるためです。

HTML
<body>
	<table width="600px"></table>
</body>
よく使うHTMLタグ
<table>
テーブルを作成する際に使用します。子要素にtr、tdタグを使用することで構造を作ります。
  • width
  • border
  • cellpadding
  • cellspacing
  • align
  • id
  • style
<tr>
テーブルの1行を表します。子要素にtdタグを指定できます。
  • style
<td>
表示するデータを記述します。
  • style
<p>
文章を記述する際に使います。
<img>
画像を表示する際に使用します。src属性に画像のパス(httpから始まるフルパス)。alt属性は画像が表示できなかったときに表示されるテキスト。
  • src
  • alt
  • width
  • height
<a>
リンクを作成する際に使用します。imgタグの入れ子にすることで画像にリンクを設定することもできます。
  • href
  • target
<br>
改行する際に使用します。

スタイリング

メールの中身をマークアップした後は、CSSを使いスタイリングしていきます。ウェブ開発の場合外部から読み込むのが一般的ですが、HTMLメールではCSSの外部読み込みをサポートしていません。そのため「インライン形式」または「埋め込み形式」でスタイリングしていきます。body直下のtableタグでは、cellpadding、cellspacing、borderの値は0にします。

インライン形式
各HTMLタグ内にCSSを直接指定する形式。
埋め込み形式
headタグ内にCSSをまとめて記述する形式。
よく使うスタイル
cellpadding
テーブルのセル内の余白を指定します。HTMLメールの場合0を指定します。tableタグで使えます。
cellspacing
テーブルのセル同士の間隔を指定します。HTMLメールの場合0を指定します。tableタグで使えます。
border
テーブルの枠線の太さを指定します。HTMLメールの場合0を指定します。
style
各タグ内でスタイルの指定を行うことができます。
  • margin
  • padding
  • background-color
  • color
  • font-family
  • font-size
  • font-weight
  • text-align
  • border-radius
  • line-height
  • background
  • display
  • text-decoration
  • box-sizing
font-size
フォントの大きさを指定します。style属性で使えます。
font-weight
文字の太さを指定します。style属性で使えます。
color
文字色を指定します。style属性で使えます。

テンプレート

HTMLメールに最低限必要なスタイルを適用すると以下のようになります。

HTML
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
	<meta name="viewport" content="target-densitydpi=device-dpi,width=device-width,maximum-scale=1.0,user-scalable=yes">
	<meta http-equiv="Content-Language" content="ja">
	<meta charset="shift_jis">
	<title></title>
</head>
<body>
	<table border="0" cellpadding="0" cellspacing="0" width="600px"></table>
</body>
</html>

レイアウト

セル結合のrowspanやcolspanは使わず、tableダクを入れ子にすることでレイアウトを作成していきます。

画像
文章1 文章2

画像の下に2カラムで文章を入れていく場合は、以下のように記述します。

UWSC
<body>
<table border="0" cellpadding="0" cellspacing="0" width="600px">
	<tr>
		<td><img src="○○○.jpg" alt="○○○"></td>
	</tr>
	<tr>
		<table border="0" cellpadding="0" cellspacing="0" width="600px">
			<tr>
				<td>文章1</td>
				<td>文章2</td>
			</tr>
		</table>
	</tr>
</table>
</body>

プログラム実行例

指定期間のメール情報を取得(Outlook)

UWSC
CONST olFolderInbox = 6
CONST xlTop = -4160
CONST xlLeft = -4131

DIM Excel = ExcelBoot()

DIM Outlook = CREATEOLEOBJ("Outlook.Application")
DIM NameSpace = Outlook.GetNameSpace("MAPI")
DIM Folder = NameSpace.GetDefaultFolder(olFolderInbox)
DIM Items = Folder.Items

DIM start = "2021/01/01"
DIM end = "2021/01/02"

Items = Items.Restrict("[ReceivedTime] >= '" + start + "' AND [ReceivedTime] < '" + end + "'")

DIM array[][1] = "受信日時", "ReceivedTime", + _
					"送信者メールアドレス", "SenderEmailAddress", + _
					"送信者", "SenderName", + _
					"CC", "CC", + _
					"BCC", "BCC", + _
					"件名", "Subject", + _
					"本文", "Body", + _
					"HTML本文", "HTMLBody"

Excel.Application.ScreenUpdating = FALSE

FOR i = 0 TO UBound(array)
	Excel.Cells(1, i + 1).Value = array[i][0]
NEXT

DIM row = 2

FOR MailItem IN Items
	FUKIDASI(row + "/" + Items.Count)
	WITH MailItem
		FOR i = 0 TO UBound(array)
			Excel.Cells(row, i + 1).Value = EVAL("." + array[i][1])
		NEXT
	ENDWITH
	row = row + 1
NEXT

WITH Excel.Range("A1").CurrentRegion
	.ColumnWidth = 20
	.RowHeight = 30
	.VerticalAlignment = xlTop
	.HorizontalAlignment = xlLeft
ENDWITH

Excel.Application.ScreenUpdating = TRUE
使用関数

HTMLメールを送信(Outlook)

HTMLメールの本文は長くなるので、TEXTBLOCKで定義して代入しています。

UWSC
CONST olMailItem = 0
CONST olFormatHTML = 2

DIM Outlook = CREATEOLEOBJ("Outlook.Application")
DIM MailItem = Outlook.Application.CreateItem(olMailItem)

WITH MailItem
   .BodyFormat = olFormatHTML
   .Subject = "HTMLメールのテスト"
   .HTMLBody = Body
   .To = "contact@example.com"   // 送信先
   Account = Outlook.Session.Accounts.Item("info@example.com")    // 送信元
   .SendUsingAccount = Account
   .Send
ENDWITH

TEXTBLOCK Body
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional/a/EN" "https://www.w3.org/TR/html4/loose.dtd">
<html>
   <head>
       <meta name="viewport" content="target-densitydpi=device-dpi,width=device-width,maximum-scale=1.0,user-scalable=yes">
       <meta http-equiv="Content-Language" content="ja">
       <meta charset="shift_jis">
       <title></title>
   </head>
   <body>
       <table border="0" cellpadding="0" cellspacing="0" width="600px">
           <tr>
               <td><img alt="画像" src="http://example.com/image.jpg" width="600px" style="width:600px;"></td>
           </tr>
           <tr>
               <table border="1px" cellpadding="0" cellspacing="0" width="600px">
                   <tr>
                       <td width="50%">テキスト1</td>
                       <td width="50%">テキスト2</td>
                   </tr>
               </table>
           </tr>
       </table>
   </body>
</html>
ENDTEXTBLOCK
使用関数
解説

参考文献

  1. MailItem.HTMLBody プロパティ (Outlook) | Microsoft Learn
  2. HTMLメールはどうやって作成するの?基本と特徴を徹底解説!【保存版】
  3. 画像の横幅によってHTMLメールの表示が崩れる場合|かんばらあい

関連記事

MailItem オブジェクト
Items.Restrict メソッド (Outlook)
Items コレクションにフィルタを適用し、フィルタに一致する元のすべてのアイテムを含む新しいItems コレクションを返します。
MailItem.Attachments プロパティ (Outlook)
MailItem.BodyFormat プロパティ (Outlook)
MailItem.Parent プロパティ (Outlook)
MailItem.ReceivedTime プロパティ (Outlook)
MailItem.To プロパティ (Outlook)
CDO.From プロパティ
Account オブジェクト
Accountオブジェクトは、現在のプロファイルに定義されているアカウントを表します。
Accounts オブジェクト
現在のプロファイルで利用できるアカウントを表すAccountオブジェクトのセットが含まれています。