2012-05-04 24 views
0

我想轉發我收到一封電子郵件,並在它上面附加一個額外的消息的格式。下面的代碼我寫了有點這樣做,但我失去了原始信息的所有格式。有什麼方法可以保留原始郵件的格式,但是能夠在電子郵件中附加額外的測試嗎?轉發電子郵件,並附加額外的文本,而不會丟失原始郵件

我的代碼:

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的身體,那麼我保持原來的消息的格式。當我更新itmNew.Body,那麼itmOld.Body就是用簡單的文字寫的,而且我失去了所有的格式。

+1

請嘗試更新'.HTMLBody'。您需要稍微不同的語法:'itmNew.HTMLBody = myMessage&「

」&itmNew.HTMLBody' – JimmyPena

回答

0

我覺得日本的評論點你在正確的方向,但我認爲從HTML知識有限你的問題的結果。這不是關於HTML的完整教程,但我希望它能讓你開始。

如果使用Debug.Print輸出.HTMLBody眼前的窗口,你會看到類似這樣的:

< 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」> < head>

很多東西在這裏

</h EAD> <體>

很多的東西在這裏

</BODY> </HTML>

你只會得到 「<!DOCTYPE HTML ...」 如果包創建的消息支持HTML的XML版本。你應該看到最小值爲:

< HTML> <頭「很多東西在這裏< /頭」<體>的 東西很多在這裏</BODY> </HTML>

如果你將額外的信息放在前面或結尾處,然後你打破了HTML的規則。發生什麼將取決於如何寬恕接收者的電子郵件包。爲了符合HTML規則,您必須在「< body>」和「</body>」之間放置額外的消息。

如果您仔細查看幾條消息,您會看到它們可以變化多少。有些將是白色的黑色文字,黑色的一些白色文字以及兩者之間的各種變化。無論消息的作者做了什麼,你的消息都必須是可讀的。我的建議是在頂部創建一個單元格表格,然後設置字體和背景顏色。請嘗試以下操作,然後根據您的要求進行調整:

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) 
相關問題