[英]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,但我希望能夠在某處輸入A
、 B
、 C
和D
值,單擊發送,就是這樣。
我遇到的所有代碼都可以實現可變因素,但幾乎沒有電子郵件正文的代碼,如果有,它們都沒有包含 .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.