跳至主要内容

如何在Outlook中回复邮件时保留附件?

Author: Kelly Last Modified: 2025-05-07

在 Microsoft Outlook 中,当你转发电子邮件时,原始附件会保持不变。然而,当你回复电子邮件时,Outlook 会自动删除所有附件,因为它假定这些附件在对话中是不必要的。这可能会令人沮丧且效率低下,特别是当你需要引用重要文件、重新发送文档或保留附件以获得更好的上下文时。幸运的是,有几种方法可以确保在 Outlook 中回复时附件仍然包含在内,无论你更喜欢手动、一键式还是自动化解决方案:

通过手动复制和粘贴回复带附件的邮件 基础但繁琐

使用 Kutools for Outlook 一键回复带附件的邮件 👍 快速且毫不费力

使用 VBA 自动回复带附件的邮件 技术性且需设置


通过手动复制和粘贴回复带附件的邮件

你可以手动从电子邮件中复制附件,并在发送之前将其粘贴到回复消息中。

1. 打开 Outlook,选择要回复的电子邮件,并在阅读窗格中预览它或在单独的窗口中打开它。

2. 单击任意附件,然后在“附件”选项卡下单击 全选 > 复制

the screenshot of step about replying with attachments by manually copying and pasting 1

3. 单击“答复”按钮以打开答复窗口。

the screenshot of step about replying with attachments by manually copying and pasting 2

4. 在答复消息中,单击消息正文中的任意位置并按 Ctrl + V 或在“消息”选项卡上单击“粘贴”以插入复制的附件。

the screenshot of step about replying with attachments by manually copying and pasting 3

5. 撰写你的答复,检查附件,然后单击“发送”。

局限性:

  • 手动且重复:不适合频繁使用。
  • 耗时:每次都需要额外步骤。
  • 容易出错:你可能会忘记复制和粘贴附件。

📂 轻松保存多封邮件的附件

厌倦了在 Outlook 中逐封邮件保存附件?使用 Kutools for Outlook 简化您的工作流程!强大的“保存所有(附件)”功能让您只需几次点击,即可从多封邮件或整个文件夹中归档附件。告别繁琐的手动操作,轻松掌控您的收件箱。

Save attachments in multiple emails

立即下载 Kutools for Outlook


使用 Kutools for Outlook 一键回复带附件的邮件 👍

为了快速且毫不费力地回复带附件的邮件,你可以使用 Kutools for Outlook带原始附件答复功能允许你只需单击一下即可在回复时保留原始附件。

使用Kutools for Outlook解锁无与伦比的邮件处理效率!永久免费获取 70 项强大功能。立即下载免费版本

选择包含你需要保留的附件的电子邮件。然后单击 Kutools > 带原始附件答复带原始附件全部答复

the screenshot of the Reply with Original Attachment or Reply All with Original Attachment button

就这样!答复消息将自动包含来自原始电子邮件的所有附件。只需撰写你的消息并单击“发送”。

the screenshot of keeping attchments in replying email using Kutools for Outlook

为什么使用 Kutools for Outlook?

  • ✅ 节省时间:无需手动复制和粘贴附件。
  • ✅ 一键式解决方案:即时回复带附件。
  • ✅ 用户友好:易于使用,无需技术技能。
注意 要应用 Kutools for Outlook 的带原始附件答复 工具,首先,你应该下载并安装 Kutools for Outlook

使用 VBA 自动回复带附件的邮件

对于熟悉 VBA 脚本的用户,此方法可自动完成带附件回复的过程。但是,它需要在 Outlook 中启用宏并手动添加脚本。

💡 重要提示: 在运行 VBA 宏之前,你需要在 Outlook 中启用宏

步骤 1:打开 VBA 编辑器

1. 选择你要回复的电子邮件。

2. 按 Alt + F11 打开 Microsoft Visual Basic for Applications 窗口。

3. 在左侧面板中,展开 Project1 > Microsoft Outlook 对象。双击 ThisOutlookSession 以打开它。

the screenshot of the ThisOutlookSession option

步骤 2:插入 VBA 代码

将以下 VBA 代码复制并粘贴到 ThisOutlookSession 窗口中:

Sub RunReplyWithAttachments()
'Update by Extendoffice 20250224
    Dim xReplyItem As Outlook.MailItem
    Dim xItem As Object
    On Error Resume Next
    Set xItem = GetCurrentItem()
    If xItem Is Nothing Then Exit Sub
    Set xReplyItem = xItem.Reply
    CopyAttachments xItem, xReplyItem
    xReplyItem.Display
    Set xReplyItem = Nothing
    Set xItem = Nothing
End Sub

Sub RunReplyAllWithAttachments()
    Dim xReplyAllItem As Outlook.MailItem
    Dim xItem As Object
    Set xItem = GetCurrentItem()
    If xItem Is Nothing Then Exit Sub
    Set xReplyAllItem = xItem.ReplyAll
    CopyAttachments xItem, xReplyAllItem
    xReplyAllItem.Display
    Set xReplyAllItem = Nothing
    Set xItem = Nothing
End Sub

Function GetCurrentItem() As Object
    On Error Resume Next
    Select Case TypeName(Application.ActiveWindow)
        Case "Explorer"
            Set GetCurrentItem = Application.ActiveExplorer.Selection.Item(1)
        Case "Inspector"
            Set GetCurrentItem = Application.ActiveInspector.CurrentItem
    End Select
End Function

Sub CopyAttachments(SourceItem As MailItem, TargetItem As MailItem)
    Dim xFilePath As String
    Dim xAttachment As Attachment
    Dim xFSO As Object
    Dim xTmpFolder As Object
    Dim xFldPath As String
    Set xFSO = CreateObject("Scripting.FileSystemObject")
    Set xTmpFolder = xFSO.GetSpecialFolder(2)
    xFldPath = xTmpFolder.Path & "\"
    For Each xAttachment In SourceItem.Attachments
        If IsEmbeddedAttachment(xAttachment) = False Then
            xFilePath = xFldPath & xAttachment.Filename
            xAttachment.SaveAsFile xFilePath
            TargetItem.Attachments.Add xFilePath, , , xAttachment.DisplayName
            xFSO.DeleteFile xFilePath
        End If
    Next
    Set xFSO = Nothing
    Set xTmpFolder = Nothing
End Sub

Function IsEmbeddedAttachment(Attach As Attachment)
    Dim xAttParent As Object
    Dim xCID As String, xID As String
    Dim xHTML As String
    On Error Resume Next
    Set xAttParent = Attach.Parent
    xCID = Attach.PropertyAccessor.GetProperty("http://schemas.microsoft.com/mapi/proptag/0x3712001F")
    If xCID <> "" Then
        xHTML = xAttParent.HTMLBody
        xID = "cid:" & xCID
        If InStr(xHTML, xID) > 0 Then
            IsEmbeddedAttachment = True
        Else
            IsEmbeddedAttachment = False
        End If
    End If
End Function

步骤 3:运行 VBA 宏

1. 按 F5 或单击“运行”按钮以执行宏。

2. 在“”对话框中,选择 ThisOutlookSession.RunReplyAllWithAttachments 以回复所有人,或选择 ThisOutlookSession.RunReplyWithAttachments 以回复一个收件人。单击“运行”。

the screenshot of the Macros dialog box

结果

答复窗口将打开并包含所有原始附件。只需撰写你的消息并单击“发送”。

VBA 方法的优缺点:

  • ✅ 自动化:无需手动复制和粘贴附件。
  • ❌ 需要 VBA 知识 :可能不适合初学者。
  • ❌ 宏默认被禁用 :你必须手动启用它们。

结论:你应该选择哪种方法?

以下是三种方法的比较,帮助你决定哪种方法最适合你的需求:

方法最适合易用性效率
手动复制-粘贴 偶尔使用 ⭐⭐⭐⭐ ⭐⭐
Kutools for Outlook 日常使用,非技术人员 ⭐⭐⭐⭐⭐ ⭐⭐⭐⭐⭐
VBA 宏 自动化爱好者,高级用户 ⭐⭐⭐ ⭐⭐⭐⭐

对于大多数用户来说,Kutools for Outlook 是最佳选择,因为它是 Outlook 中回复带附件的最快捷、最简便的方法。现在,你可以轻松使用最适合你工作流程的方法在 Outlook 中回复带附件的邮件了!🚀


演示:使用 Kutools for Outlook 一键回复带附件的邮件

 

相关文章: