簡體   English   中英

如何使用 MS Outlook 模板 (.oft) 發送電子郵件,並結合插入電子郵件正文的變量值(通過 Excel 或其他方式)

[英]How to send email using MS Outlook Template (.oft), combined with variable values inserted into body of email (through Excel or otherwise)

示例:Outlook 中的面試確認電子郵件。

親愛的[A]
您對[B]采訪已確認用於[C] 地址是[D]
謝謝,
約翰·多伊

A - 名字
B - 公司名稱
C - 日期和時間
D - 物理地址

我見過人們為此使用 Excel,但我希望能夠在某處輸入ABCD值,單擊發送,就是這樣。

我遇到的所有代碼都可以實現可變因素,但幾乎沒有電子郵件正文的代碼,如果有,它們都沒有包含 .oft 文件。

您的問題意味着您希望找到一些與您的要求完全匹配的代碼。 也許這是不公平的批評,但許多人似乎確實期望他們的確切要求已經存在,或者有人為他們編碼。

如果我的需求需要專業知識,而這對我來說是新的,我會分別研究每個領域,然后在嘗試使用我的新知識來滿足我的需求之前進行試驗。

您的要求所需的第一個知識是創建電子郵件模板文件。 我假設你已經知道如何做到這一點,但如果沒有,有很多網站解釋了如何做到這一點。 我使用名稱“StdMsg.oft”保存了我的模板。 您需要修改我的宏以在模板中使用您的名稱。

您可以將電子郵件模板文件保存在任何位置,但最好使用默認位置,以便所有模板都放在一起。 當您想打開模板時,您的宏需要知道它在哪里。 對於 Windows 10,默認位置是“C:\\Users\\xxxxx\\AppData\\Roaming\\Microsoft\\Templates”,其中“xxxxx”是您的用戶名。 您可以輸入此字符串,但如果您希望與同事共享此宏,您可能希望向系統詢問“xxxxx”的當前值。 我很容易找到一個給我默認位置的網站,但找到一個告訴我如何獲取“xxxxx”值的網站比較困難。 我發現很多網站都告訴我如何獲取“xxxxx”的值,但大多數都是錯誤的,或者是讀者可能不知道的假設知識。 我保留一個名為“Resources”的文件夾,其中包含 Html、Css、VBAExcel、VBAOutlook 和 VBAGeneral 等子文件夾。 這些子文件夾包含記錄我不太可能記住的有用片段的文本文件。 我建議你創建一個類似的文件夾並記錄我如何獲得“xxxxx”的值。

接下來,您需要打開電子郵件模板文件。 我發現很多網站都展示了如何從 Excel 執行此操作,但我沒有找到一個顯示如何從 Outlook 正確執行此操作的站點。 您必須從 Excel 創建 Outlook 應用程序對象。 在 Outlook 中,您已經在一個 Outlook 應用程序對象中,因此您無需再創建另一個對象。 實際上,您無法創建新的 Outlook 應用程序對象,因為 Outlook 只允許運行其自身的一個版本。 如果您嘗試創建新的 Outlook 應用程序對象,您將獲得對已運行副本的引用。 同樣,您可能希望將此信息記錄在資源文件夾中。

我已經使用InputBox從用戶那里獲取了四個值。 如果我為自己或客戶編寫這個宏,我會使用一個表單。 很難展示如何創建一個表單,如果您已經知道,這將是浪費精力。

打開電子郵件模板后,您就可以訪問其所有屬性。 本網站和其他地方有很多答案,展示了如何修改電子郵件的 html 或文本正文。 我假設你想發送 html 電子郵件,所以我修改了 html 正文。

我的宏會顯示編輯過的電子郵件,但如果您不想在電子郵件發送前檢查電子郵件,則可以使用“ Send而不是“ Display

Sub SendStdMsgOft()

  Dim Address As String
  Dim CompanyName As String
  Dim DateAndTime As String
  Dim FirstName As String
  Dim NewEmail As MailItem
  Dim PathFileName As String

  PathFileName = Environ("AppData") & "\Microsoft\Templates\StdMsg.oft"

  Set NewEmail = CreateItemFromTemplate(PathFileName)

  FirstName = InputBox("First name")
  CompanyName = InputBox("Company name")
  DateAndTime = InputBox("Date And Time")
  Address = InputBox("Address")

  With NewEmail
    .HtmlBody = Replace(.HtmlBody, "[A]", FirstName)
    .HtmlBody = Replace(.HtmlBody, "[B]", CompanyName)
    .HtmlBody = Replace(.HtmlBody, "[C]", DateAndTime)
    .HtmlBody = Replace(.HtmlBody, "[D]", Address)
    .Display
  End With

End Sub

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM