Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 转发Outlook电子邮件,不添加签名,也不添加原始电子邮件的发件人和收件人_Vba_Outlook - Fatal编程技术网

Vba 转发Outlook电子邮件,不添加签名,也不添加原始电子邮件的发件人和收件人

Vba 转发Outlook电子邮件,不添加签名,也不添加原始电子邮件的发件人和收件人,vba,outlook,Vba,Outlook,我期待着将Outlook中收到的电子邮件转发到一个新地址,不做任何更改—完全复制,不添加信封信息或签名 电子邮件的正文中始终有一个HTML表,需要以相同的方式保留。我可以将其转发,但它总是在原始电子邮件的“上方”添加一个带有签名的空白电子邮件正文,然后在原始电子邮件的上方添加标准From:和to:以及email属性 有没有办法去掉这个?我试着改变它以生成一个“新”对象,因为新对象在转发之前没有引入HTML正文 Sub Send_Forward(ByRef oMail As Object, rep

我期待着将Outlook中收到的电子邮件转发到一个新地址,不做任何更改—完全复制,不添加信封信息或签名

电子邮件的正文中始终有一个HTML表,需要以相同的方式保留。我可以将其转发,但它总是在原始电子邮件的“上方”添加一个带有签名的空白电子邮件正文,然后在原始电子邮件的上方添加标准From:和to:以及email属性

有没有办法去掉这个?我试着改变它以生成一个“新”对象,因为新对象在转发之前没有引入HTML正文

Sub Send_Forward(ByRef oMail As Object, repBodyStr As String, sendMail As 
Boolean)

Dim myForward As Object                   

Set myForward = oMail.Forward
myForward.Subject = myForward.Subject

myForward.HTMLBody = repBodyStr & "<br>" & myForward.HTMLBody
myForward.Recipients.Add "xxx@xxx.net"

myForward.Display


ExitSub:

Set myForward = Nothing

End Sub
Sub Send_Forward(ByRef oMail作为对象,repBodyStr作为字符串,sendMail作为
布尔值)
将myForward设置为对象
设置myForward=oMail.Forward
myForward.Subject=myForward.Subject
myForward.HTMLBody=repBodyStr&“
”&myForward.HTMLBody myForward.Recipients.Add“xxx@xxx.net" myForward.显示 进出口银行: 设置myForward=无 端接头
创建一个新项目(
Application.CreateItem
),然后从现有邮件中复制HTMLBody属性并添加收件人

更新:如果需要复制附件(如图像),则必须保存原始邮件中的附件(
Attachment.SaveAsFile
),然后将其作为附件添加到新邮件中(
MailItem.attachments.add
)。请注意,这不适用于嵌入式OLE对象(在RTF格式的情况下)和嵌入式邮件附件。对于图像,您还需要使用
Attachment.PropertyAccessor
复制
PR\u ATTACH\u CONTENT\u ID
MAPI属性 另请注意,
MailItem.Copy
将不起作用,因为邮件发送状态将被复制(这不是您想要的)

如果使用是一个选项,它允许复制消息而不复制其发送状态。下面的内容应该可以完成这项工作(在我脑子里):


嗨,Dmitry,我使用Application.ActiveExplorer.Selection(1)和其他一些调整。但是,HTML正文中的图片没有保留。HTML中的表格保留,但图片现在是“图片无法显示”。另外,您是否可以确认这是否现在将遍历每条消息?我现在正在测试。非常感谢。呃,现在就在这个问题上打鼹鼠。我不能让它遍历每条消息。我不确定这是否是一个问题,我在哪里有这个子位置的呼吁?或者潜艇本身的问题。如果文件夹中有4个项目,则宏将正确地分别自动重新生成4个项目中的每一个项目,但它只为队列中最顶端的项目(按日期排序时最新的项目)发送新消息“转发”,然后不对其余项目进行处理。谢谢你,Dmitry,我现在正在尝试。当前正在完成更改以确保代码继续到下一个项目,因为我的代码的上一次迭代只在选择光标中的项目上处理(不是期望的行为)
Set Session = CreateObject("Redemption.RDOSession")
Session.MAPIOBJECT = Application.Session.MAPIOBJECT
set originalMsg = Session.GetRDOObjectFromOutlookObject(Application.ActiveExplorer.Selection(1))
set newMsg = Session.GetDefaultFolder(olFolderDrafts).Items.Add
'copy the message and clear out recipients
originalMsg.CopyTo(newMsg)
newMsg.Recipients.Clear
newMsg.Recipients.Add "xxx@xxx.net"
newMsg.Save
'now reopen the message in OOM and diplay it. Or you can use newMsg.Display
set myForward = Application.Session.GetItemFromID(newMsg.EntryID)
myForward.Display