2012-05-04 3 views
0

私が受け取った電子メールを転送し、その上に追加のメッセージを追加しようとしています。ちょっと書いた次のコードはこれを行いますが、元のメッセージの書式をすべて失います。元のメッセージのフォーマットを維持する方法はありますか?さらにメールに追加のテストを追加する方法はありますか?メールを転送し、元のメッセージのフォーマットを失うことなく追加のテキストを追加します。

MY CODE:

Sub xForward() 
    myMessage = "You recently requested access to the table. We are requiring all requests to complete a mandatory training session." & vbCr & vbCr & "Thank you, " & vbCr & "Ricky" 

    Dim itmOld As MailItem, itmNew As MailItem 

    Set itmOld = ActiveInspector.CurrentItem 
    Set itmNew = itmOld.Forward 

    itmNew.Body = myMessage & vbCr & vbCr & itmOld.Body 
    itmNew.Subject = "Access Request" 
    itmNew.Display 

    Set itmOld = Nothing 
    Set itmNew = Nothing 
End Sub 

私はitmNewの身体を更新しない場合、私は元のメッセージのフォーマットを維持します。私はそれを更新する瞬間.New.Body、それからitmOld.Bodyは簡単なテキストで書かれており、私はすべてのフォーマットを失う。

+1

代わりに '.HTMLBody'を更新してみてください。わずかに異なる構文が必要です: 'itmNew.HTMLBody = myMessage&"

"&itmNew.HTMLBody' – JimmyPena

答えて

0

私はJPのコメントが正しい方向を指していると思いますが、あなたの質問はHTMLの知識が限られていると思われます。これはHTMLに関する完全なチュートリアルではありませんが、あなたが始めたことを願っています。

あなたがイミディエイトウィンドウに出力.HTMLBodyへのDebug.Printを使用する場合のようなものが表示されます:

< DOCTYPE用HTML PUBLIC " - // W3C // DTD XHTML 1.0過渡// EN" を! "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns = "http://www.w3.org/1999/xhtml"> <頭>

たくさんのものはここにあります

</h EAD>ここで原料の<ボディ>

たくさん

</body>の</HTML>

はあなたが唯一の "<!DOCTYPE htmlの..." を取得する場合には作成したパッケージメッセージはHTMLのXML版をサポートしています。あなたが見るべき最低限は次のとおりです。

<のhtml> <ヘッド>ここにものがたくさん< /ヘッド> <体>ここ ものがたくさん</body>の</HTML>

の場合余分なメッセージをこの前または最後に置き、HTMLのルールを破っています。何が起こるかは、受信者の電子メールパッケージがいかに寛容であるかに依存します。 HTMLの規則に従うには、 "<本文"と "</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) 
関連する問題