我现有的促销邮件包含HTML格式,颜色,项目符号等。我想使用VBA将此邮件转发给新的收件人。
我有一个包含以下正文的现有邮件:
你好XXnameXX,
存在一些图片&很多彩色格式。
感谢您注册我们的网站。您的用户ID是XXuseridXX。
谢谢。
此处XXnameXX应替换为FirstName,XXuseridXX替换为userID
我可以从Outlook转发所选邮件。但它没有使用所有图像/格式/项目符号转发它。在收到结束时,它显示一个完整的不同邮件与链接和所有。
Sub ForwardEmail()
Dim oApp As Outlook.Application
Dim objFolder As Outlook.MAPIFolder
Set oApp = New Outlook.Application
Set objNS = Application.GetNamespace("MAPI")
Set objFolder = objNS.GetDefaultFolder(olFolderInbox)
Dim oEmail As Outlook.MailItem
For Each objitem In Application.ActiveExplorer.Selection
If objFolder.DefaultItemType = olMailItem Then
If objitem.Class = olMail Then
Set myforward = objitem.Forward
Set objRecip = myforward.Recipients.Add("firstlastname@gmail.com")
myforward.HTMLBody = Replace(myforward.HTMLBody, "xxnamexx", "FirstName", 1, 1)
myforward.Send
End If
End If
Next
End Sub
答案 0 :(得分:1)
首先,不要在单行代码中使用多个点。我建议打破调用链并在不同的代码行上声明每个属性或方法调用。
If objFolder.DefaultItemType = olMailItem Then
每次都不需要在循环中检出文件夹的属性。我建议将这个条件移出循环。
objitem.BodyFormat = olFormatHTML
为什么需要设置BodyFormat属性?在设置属性之前是否有机会检查值?
myforward.Body = Replace(myforward.Body, "xxnamexx", "FirstName", 1, 1)
Body属性是表示Outlook项目的明文正文的字符串。如果要保留格式,则需要使用HTMLBody属性。您可以在Chapter 17: Working with Item Bodies中了解有关使用项目正文的所有可能方式的更多信息。
无论如何,我没有看到您在邮件正文中添加图片和其他信息的代码。