Как отправить электронное письмо с символами Unicode, используя VBScript? - PullRequest
1 голос
/ 29 августа 2011

У меня есть некоторый VBScript для отправки по электронной почте. Но когда я пытаюсь отправить текст в формате Unicode, получается что-то нечитаемое. Я пробовал что-то вроде .Charset="UTf-8", но это безнадежно. Мой код VBScript ниже; файл emailbody.txt содержит что-то вроде этого " hệ điều hành khởi động !"

Option Explicit

Call Email

Function Email
    Dim iMsg, iConf, Flds, schema

    Set iMsg = CreateObject("CDO.Message")
    Set iConf = CreateObject("CDO.Configuration")
    Set Flds = iConf.Fields

    schema = "http://schemas.microsoft.com/cdo/configuration/"
    Flds.Item(schema & "sendusing") = 2
    Flds.Item(schema & "smtpserver") = "smtp.gmail.com"
    Flds.Item(schema & "smtpserverport") = 465
    Flds.Item(schema & "smtpauthenticate") = 1
    Flds.Item(schema & "sendusername") = ""
    Flds.Item(schema & "sendpassword") =  ""
    Flds.Item(schema & "smtpusessl") = 1
    Flds.Update

    'These constants are defined to make the code more readable
    Const ForReading = 1, ForWriting = 2, ForAppending = 8
    Dim fso, f, BodyText, HeadText
    Set fso = CreateObject("Scripting.FileSystemObject")
    'Open the file for reading
    Set f = fso.OpenTextFile("emailbody.txt", ForReading) 'edit path if required
    'The ReadAll method reads the entire file into the variable BodyText
    BodyText = f.ReadAll
    'Close the file
    f.Close
    Set f = Nothing
    Set fso = Nothing

    With iMsg
        .To = ""
        .From = ""
        .Sender = ""
        .Subject = ""

        .HTMLBody = BodyText

        Set .Configuration = iConf
        .Send
    End With

    set iMsg = nothing
    set iConf = nothing
    set Flds = nothing

End Function

1 Ответ

3 голосов
/ 29 августа 2011

Прочитать тело письма, используя объект Adodb.Stream.Потому что FSO не поддерживает чтение файлов в кодировке utf-8.Заполните переменную BodyText следующим образом:

Dim adoStream
Set adoStream = CreateObject("Adodb.Stream")
adoStream.Open
adoStream.Charset = "UTF-8"
adoStream.LoadFromFile "emailbody.txt"
'********** !! ***************
BodyText = adoStream.ReadText(-1)
'********** !! ***************
adoStream.Close
Set adoStream = Nothing

А, множество

iMsg.BodyPart.Charset = "utf-8"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...