首页 > 解决方案 > Outlook 电子邮件脚本读取 UTF8 文件

问题描述

On Error Resume Next
Set objSysInfo = CreateObject("ADSystemInfo")
Set WshShell = CreateObject("WScript.Shell")
strUser = objSysInfo.UserName
Set objUser = GetObject("LDAP://" & strUser)
strName = objUser.FullName
strTitle = objUser.Description
strCred = objUser.Info
Set objWord = CreateObject("Word.Application")
Set objDoc = objWord.Documents.Add()
Set objSelection = objWord.Selection
strFailas1 = "1.jpg"
strFailas2 = "2.jpg"
strFailas3 = "3.jpg"
strFailas4 = "4.jpg"
strSPath1 = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERPROFILE%") & "\Appdata\Roaming\Microsoft\Signatures\" & strFailas1
strSPath2 = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERPROFILE%") & "\Appdata\Roaming\Microsoft\Signatures\" & strFailas2
strSPath3 = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERPROFILE%") & "\Appdata\Roaming\Microsoft\Signatures\" & strFailas3
strSPath4 = CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERPROFILE%") & "\Appdata\Roaming\Microsoft\Signatures\" & strFailas4
Set objEmailOptions = objWord.EmailOptions
Set objSignatureObject = objEmailOptions.EmailSignature
Set objSignatureEntries = objSignatureObject.EmailSignatureEntries
If (strCred) Then objSelection.TypeText strName & ", " & strCred Else objSelection.TypeText strName
objSelection.TypeParagraph()

Set adoStream = CreateObject("ADODB.Stream")
adoStream.Open
adoStream.Charset = "UTF-8"
adoStream.LoadFromFile "file.txt"
BodyTEXT = adoStream.ReadText(-1)
adoStream.TypeText BodyTEXT
adoStream.Close
Set adoStream = Nothing

Set objSelection = objDoc.Range()
objSignatureEntries.Add "Full Signature", objSelection
objSignatureObject.NewMessageSignature = "Full Signature"
objDoc.Saved = True
objWord.Quit

我正在尝试创建一个 VBScript 来为 Active Directory 中的所有用户自动生成电子邮件签名,但我遇到了问题。我想插入 UTF8 *.txt 文件作为电子邮件签名正文,但运行此脚本后它不显示。也许我需要将它设置为不同的变量或什么?

标签: emailvbscriptoutlooksignature

解决方案


VBScript 疑难解答 101:删除On Error Resume Next,这样您就可以实际看到哪里出了问题。与流行的看法相反,该声明不会神奇地使错误消失。它只是阻止口译员告诉您有关它们的信息。

永远不要On Error Resume Next在生产代码使用globel

*走出肥皂盒*

话虽如此,您将文本读入变量BodyTEXT,它工作得很好。但是,您然后尝试adoStream.TypeText用它调用。如果没有全局On Error Resume Next该语句将引发错误

对象不支持此属性或方法。

因为ADODB.Stream对象没有这样的方法。

你可能打算改写objSelection.TypeText BodyTEXT


推荐阅读