You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Outlook默认自动压缩发送邮件中的图片(附件/HTML正文)?

自动压缩Outlook邮件中的图片(附件+正文)

一、通过Outlook内置选项设置(无需代码)

1. 默认压缩附件中的图片

打开Outlook,依次点击「文件」>「选项」>「高级」,下拉找到「附件处理」区域,勾选**「自动压缩插入的图片」**(英文对应Automatically compress images in messages)。若要针对所有附件图片默认调整分辨率,点击「附件处理」旁的「图片大小和质量」按钮,在弹窗中选择默认分辨率(如「网页/屏幕」对应96dpi,压缩率最高),并勾选「所有新邮件中使用这些设置」。

2. 默认压缩正文HTML中的图片

上述「图片大小和质量」设置会同步应用到正文插入的图片。若要确保插入时自动压缩,可先点击「图片格式」选项卡的「压缩图片」,弹窗内勾选「删除图片的裁剪区域」和「应用于所有图片」,再点击「选项」勾选「插入时自动压缩图片」,后续插入正文的图片都会按设置自动压缩。

二、通过VBA脚本实现强制自动压缩(更彻底)

如果内置选项无法满足自定义需求,可通过VBA在邮件发送前自动压缩所有图片:

1. 打开并配置VBA编辑器

按Alt + F11打开VBA编辑器,双击左侧「Project1」下的「ThisOutlookSession」,粘贴以下代码:

Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
    Dim mail As MailItem
    Dim attachment As attachment
    Dim shp As Shape
    Dim inlineShp As InlineShape
    
    ' 仅处理邮件项
    If TypeName(Item) <> "MailItem" Then Exit Sub
    Set mail = Item
    
    ' 压缩正文HTML中的内嵌图片
    If mail.BodyFormat = olFormatHTML Then
        ' 处理嵌入式图片
        For Each inlineShp In mail.InlineShapes
            If inlineShp.Type = olPicture Then
                inlineShp.PictureFormat.Compress _
                    FileSize:=olCompressWeb, _
                    DeleteCroppedAreas:=True
            End If
        Next inlineShp
        ' 处理浮动图片
        For Each shp In mail.Shapes
            If shp.Type = msoPicture Then
                shp.PictureFormat.Compress _
                    FileSize:=olCompressWeb, _
                    DeleteCroppedAreas:=True
            End If
        Next shp
    End If
    
    ' 压缩附件中的图片(仅JPG/PNG格式)
    For Each attachment In mail.Attachments
        If LCase(Right(attachment.FileName, 4)) = ".jpg" Or _
           LCase(Right(attachment.FileName, 4)) = ".jpeg" Or _
           LCase(Right(attachment.FileName, 3)) = ".png" Then
            Dim tempPath As String
            tempPath = Environ("TEMP") & "\" & attachment.FileName
            attachment.SaveAsFile tempPath
            
            ' 压缩图片
            Dim img As Object
            Set img = CreateObject("WIA.ImageFile")
            img.LoadFile tempPath
            
            ' JPG质量设为70(可调整),PNG用默认压缩
            If LCase(Right(attachment.FileName, 3)) = "png" Then
                img.SaveFile tempPath
            Else
                img.SaveFile tempPath, 70
            End If
            
            ' 替换原附件
            mail.Attachments.Remove attachment.Index
            mail.Attachments.Add tempPath
            Kill tempPath
        End If
    Next attachment
    
    Set mail = Nothing
End Sub

2. 启用宏

  • 保存代码后关闭VBA编辑器。
  • 打开Outlook「文件」>「选项」>「信任中心」>「信任中心设置」>「宏设置」,选择「启用所有宏」或「通知我有关数字签署的宏的信息」,确定后重启Outlook即可生效。

注意事项

  • 压缩附件时会临时保存图片到系统临时文件夹,发送后自动删除。
  • 若代码报错,需在VBA编辑器中点击「工具」>「引用」,勾选「Microsoft Windows Image Acquisition Library v2.0」和「Microsoft Office xx.x Object Library」。

内容的提问来源于stack exchange,提问作者Ksartor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 22:07:31