【问题标题】:Save attachment with incoming email sender's name or email address使用传入电子邮件发件人的姓名或电子邮件地址保存附件
【发布时间】:2016-01-29 17:41:10
【问题描述】:

我想将每封传入电子邮件的发件人姓名添加到保存的附件项目中,方法是存储到一个变量中,以便我以后可以使用它,将电子邮件返回到该姓名或电子邮件地址。

下面的代码首先为文件夹中的每个项目创建一个计数器,并使用日期和原始附件重命名文件,如下所示:“2016-01-29 1026 1 POCreation” - “POCreation”之前的数字 1 是柜台。

然后我通过在 Outlook 中运行规则以在脚本下方运行来保存附件 - 正如您可能知道的那样 - 并使用 objAtt.DisplayName 保存附件名称

所以基本上我想将发件人的姓名或发件人的电子邮件存储在一个变量中。我访问的所有论坛,即使是这里,也解释说他们去“MAPI " 文件夹来阅读那里的所有电子邮件,但我想也许我可以像使用 .displayname 一样直接获得它。

我尝试使用 mailitem.sendername 但这会引发找不到对象的错误,我猜不是从传入的电子邮件中读取它。我正在将它运行到 Outlook 的一个模块中。

Public Sub pdf(itm As Outlook.MailItem)
Dim FolderPath As String, path As String, count As Integer
FolderPath = "C:\Users\esacahui\Documents\POS\received"

path = FolderPath & "\*.xlsm"

FileName = Dir(path)

Do While FileName <> ""
    count = count + 1
    FileName = Dir()
Loop
' that was the counter, now is the save attachment 

Dim objAtt As Outlook.Attachment
Dim saveFolder As String
    saveFolder = "C:\Users\esacahui\Documents\POS\received"
Dim dateFormat As String
    dateFormat = Format(itm.ReceivedTime, "yyyy-mm-dd Hmm")

For Each objAtt In itm.Attachments
    objAtt.SaveAsFile saveFolder & "\" & dateFormat & " " & count & " " & objAtt.DisplayName
Next

End Sub

【问题讨论】:

  • 您在代码中的哪个位置使用了MailItem 类的SenderName 属性?
  • itm 在您对 Sub 的参数中定义为 Outlook.MailItem。因此,您需要使用 itm.SenderName,如下面我的 cmets 中所述。

标签: vba outlook


【解决方案1】:

itm.senderEmailAddress 将为您提供发件人的电子邮件地址。

【讨论】:

  • 还有itm.SenderName
【解决方案2】:

您可以使用 MailItem 类的以下属性:

  • SenderEmailAddress - 代表 Outlook 项目发件人电子邮件地址的字符串。
  • SenderName - 一个字符串,指示 Outlook 项目的发件人的显示名称。

请参阅How to: Get the SMTP Address of the Sender of a Mail Item 了解更多信息。

【讨论】:

    猜你喜欢
    • 2021-09-29
    • 2018-02-17
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多