JPのコメントはあなたを正しい方向に向けていると思いますが、あなたの質問はHTMLの限られた知識から生じていると思います。これはHTMLに関する完全なチュートリアルではありませんが、開始されることを願っています。
Debug.Printを使用して.HTMLBodyをイミディエイトウィンドウに出力すると、次のように表示されます。
<!DOCTYPE html PUBLIC "-// W3C // DTD XHTML 1.0 Transitional // EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns = "http ://www.w3.org/1999/xhtml "> <head>
ここにはたくさんのものがあります
</ head> <body>
ここにはたくさんのものがあります
</ body> </ html>
メッセージを作成したパッケージがXMLバージョンのHTMLをサポートしている場合にのみ、「<!DOCTYPEhtml...」が表示されます。表示される最小値は次のとおりです。
<html><head>ここにはたくさんのものがあります</head><body>ここにはたくさんのものがあります</body></ html>
余分なメッセージをこの前または最後に配置すると、HTMLのルールに違反することになります。何が起こるかは、受信者の電子メールパッケージがどれだけ寛容であるかによって異なります。HTMLの規則に準拠するには、「<body>」と「</body>」の間のどこかに追加のメッセージを配置する必要があります。
いくつかのメッセージを見ると、それらがどれだけ変化する可能性があるかがわかります。白地に黒のテキスト、黒地に白のテキストがあり、その間にすべてのバリエーションがあります。メッセージの作成者が何をしたかに関係なく、メッセージは読み取り可能でなければなりません。私の提案は、上部に1つのセルのテーブルを作成し、フォントと背景色を設定することです。次のことを試してから、要件に適合させてください。
Dim AddedMsg As String
Dim Pos As Long
' Create message to be inserted
' =============================
' Start a table with white background and blue text
AddedMsg = "<table border=0 width=""100%"" style=""Color: #0000FF"" bgColor=#FFFFFF>"
' Add row with single cell
AddedMsg = AddedMsg & "<tr><td><p>Cool stuff you must see!!</p></td></tr>"
' End table
AddedMsg = AddedMsg & "</table>"
' Code to add message once you have checked there is an HTML body
'================================================================
Pos = InStr(1, LCase(.HTMLBody), "<body")
If Pos = 0 Then
' This should be impossible.
Call MsgBox("<Body> element not found in HTML body", vbCritical)
' Code to handle impossible situation
End If
Pos = InStr(Pos, .HTMLBody, ">")
If Pos = 0 Then
' This should be impossible.
Call MsgBox("Terminating > for <Body> element not found in HTML body", vbCritical)
' Code to handle impossible situation
End If
'Insert your message
.HTMLBody = Mid(.HTMLBody, 1, Pos) & AddedMsg & Mid(.HTMLBody, Pos + 1)