使用Microsoft Outlook,我试图在用户点击"发送"时更改特定附件的名称。新Outlook电子邮件中的按钮。
如果找到带有名称的附件,则会将该附件的名称更改为电子邮件的主题。
在下面的示例中,我正在使用" form.pdf"作为目标附件。
当我运行代码并尝试更改DisplayName时,它不会更改电子邮件中实际附件的名称。任何建议?
Private Sub Application_ItemSend(ByVal Item As Object, Cancel As Boolean)
Dim myAttachments As Outlook.Attachments
Set myAttachments = Item.Attachments
For Each objAtt In myAttachments
If LCase(objAtt.DisplayName) = "form.pdf" Then
objAtt.DisplayName = Item.Subject & ".pdf"
End If
Next
End Sub
答案 0 :(得分:0)
Attachment.DisplayName
属性绝对没有任何内容 - 这样做是为了安全起见,以防止人们将Evil.exe
显示为ReadMe.txt
。 Attachment.FileName
属性是只读的。
理论上,所有需要做的就是设置PR_ATTACH_LONG_FILENAME
属性(DASL名称http://schemas.microsoft.com/mapi/proptag/0x3707001F
),但如果使用Attachment.PropertyAccessor.SetProperty
设置{{1},Outlook将引发异常}}
您可以使用扩展MAPI来设置属性,但它只能在C ++或Delphi中访问,而不能在VBA或任何.Net语言中访问。您可以使用Redemption在VBA或任何.Net语言中设置它:
PR_ATTACH_LONG_FILENAME