首页 > 解决方案 > 从模板发送预先编写的电子邮件,并在正文中包含收件人姓名

问题描述

我发送带有附件的电子邮件,正文中的内容不多。

我想要一种输入以下内容的方法:

到名字

请参照附件。

亲切的问候,

威拉西我

所有电子邮件地址的结构都是 FirstName.LastName@company.com。

我需要一种将 FirstName 添加到文本正文的方法。

以下 VBA 代码打开了一个模板:

Sub QuickAttachementTemplate()

    Set temp = Application.CreateItemFromTemplate("C:\Users\WillacyMe\AppData\Roaming\Microsoft\Templates\AttachmentTemplate.oft")
    temp.Display
    Set temp = Nothing

End Sub

这有一个空间来添加名字,我在运行宏后添加了电子邮件地址。

有没有办法在新电子邮件中输入电子邮件地址然后运行宏?

标签: vbaemailoutlook

解决方案


将 FirstName 占位符替换为从电子邮件地址解析的文本。

Option Explicit

Sub ReplacePlaceholder()

    Dim tempReplacePlaceholder As MailItem
    Dim recipAddress As String
    Dim firstNameFromAddress As String
    Dim len_firstNameFromAddress As Long

    ' Generate mailitem with placeholder "FirstName"
    ' Enter a single recipient in the To field
    Set tempReplacePlaceholder = ActiveInspector.CurrentItem
    tempReplacePlaceholder.Save

    With tempReplacePlaceholder
        recipAddress = .To
        Debug.Print recipAddress

        ' All email addresses must be structured FirstName.LastName@company.com.
        ' Find first instance of "."
        len_firstNameFromAddress = InStr(recipAddress, ".") - 1
        Debug.Print len_firstNameFromAddress

        firstNameFromAddress = Left(recipAddress, len_firstNameFromAddress)
        Debug.Print firstNameFromAddress
        .Body = Replace(.Body, "FirstName", firstNameFromAddress)
        .Display

    End With

End Sub

推荐阅读