【问题标题】:Forward Email with its attachment in Outlook 2010在 Outlook 2010 中转发电子邮件及其附件
【发布时间】:2020-06-23 08:18:05
【问题描述】:

下面的代码(我从多个来源中提取)现在可以正常工作,因为当我收到一封主题行中包含特定字词的电子邮件时,它会触发一个运行以下代码的脚本。

然后,此代码保留主题行,在邮件正文中添加文本并转发给预期的收件人。

但是,如果我收到的电子邮件带有附件,则代码将不再转发任何内容。我也需要它来转发通过电子邮件发送给我的附件(仅使用代码将文本添加到电子邮件正文,否则我只会设置规则)。

代码如下:

Sub ForwardEmail(item As Outlook.MailItem)
Dim oExplorer As Outlook.Explorer
Dim oMail As MailItem
Set oExplorer = Application.ActiveExplorer

On Error GoTo Release

If oExplorer.Selection.item(1).Class = olMail Then
Set oMail = item.Forward
oMail.Subject = oMail.Subject
oMail.HTMLBody = "Have a nice day." & vbCrLf & oMail.HTMLBody
oMail.Recipients.Add "email address here"


oMail.Save
oMail.Send

End If
Release:
Set oMail = Nothing
Set oExplorer = Nothing
End Sub

【问题讨论】:

  • 一点也不大喊大叫。我没有包括“!”。我只是把重要的部分全部大写,希望能引起人们的注意,他们正在寻找问题来回答谁曾经处理过这个问题并且可能愿意帮助我。书面文字很容易以读者想要的任何方式阅读,但我向您保证,我将非常感谢任何人的帮助。我对此很陌生,并会尝试编辑大写字母,以免被其他人误解。我很抱歉。
  • 有点儿笑话。大多数情况下,所有大写字母都转化为大喊大叫。我建议参考“如何在 Markdown 中格式化?”帮助中心部分。
  • 告诉你我很新,我什至不知道我被搞砸了。我是“新人”:)

标签: vba outlook email-attachments


【解决方案1】:

代码中无需使用Explorer对象:

Sub ForwardEmail(item As Outlook.MailItem)
  Dim oMail As MailItem    

  On Error GoTo Release

  If item.Class = olMail Then
     Set oMail = item.Forward
     oMail.Subject = oMail.Subject
     oMail.HTMLBody = "Have a nice day." & vbCrLf & oMail.HTMLBody
     oMail.Recipients.Add "email address here"

     oMail.Save
     oMail.Send
  End If
 Release:
  Set oMail = Nothing
  Set oExplorer = Nothing
End Sub

Getting Started with VBA in Outlook 2010 文章可能对您有所帮助。

【讨论】:

  • 非常感谢您对我的帮助。您修改后的代码能够转发没有附件的电子邮件,但不能转发带有附件的电子邮件。任何进一步的尝试建议将不胜感激。
  • 看起来 Outlook 阻止了附件。尝试在规则之外调用代码。你有同样的问题吗?
  • 我的宏没有作为选项出现在“运行”框中。这是我第一次尝试在 Outlook 中使用 vba,并尝试了所有我能想到的让它运行​​的方法。老实说,如果没有使用脚本的规则告诉我,我无法让它运行,我有点尴尬。奇怪的是,您修改后的代码(再次感谢您)允许转发电子邮件,只要它没有附件,但如果它没有附件,它根本不会转发电子邮件(即它也不会转发没有附件的电子邮件)。
  • Atafiev 经过一些研究和反复试验,我发现如果宏在子名称后包含“(”(无空格),则无法创建宏。只要输入“(”创建按钮变为非活动状态。此外,如果我在子名称的第一部分后不包含“(item As Outlook.MailItem)”,则规则向导无法识别要运行的任何脚本。感谢您采取有兴趣帮助我。
  • 经过一些研究和反复试验后,我发现如果宏在子名称后包含“(”(没有空格),则无法创建宏。只要我输入“(”)按钮变为非活动状态。此外,如果我在子名称的第一部分后不包含“(item As Outlook.MailItem)”,则规则向导无法识别任何要运行的脚本。感谢您的关注帮助我
【解决方案2】:

有一个不必要的条件

If oExplorer.Selection.item(1).Class = olMail Then

这可能会导致转发被绕过。

Sub ForwardEmail(item As Outlook.MailItem)
' Dim oExplorer As Outlook.Explorer
Dim oMail As MailItem
' Set oExplorer = Application.ActiveExplorer

On Error GoTo Release

' If oExplorer.Selection.item(1).Class = olMail Then

Set oMail = item.Forward
oMail.Subject = oMail.Subject
oMail.HTMLBody = "Have a nice day." & vbCrLf & oMail.HTMLBody
oMail.Recipients.Add "email address here"

' oMail.Save
oMail.Send

' End If

Release:
Set oMail = Nothing
' Set oExplorer = Nothing
End Sub

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-17
  • 2014-03-03
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多