2

我想使用阿拉伯文本作为主题行发送电子邮件。

该代码段将特殊字符正确地转换为阿拉伯文本以用于消息正文,但无法用于消息主题。

我想知道我错过了什么?

      设置 objCDOSYS = Server.CreateObject("CDO.Message")
      设置 objCDOConf = CreateObject("CDO.Configuration")
      设置 objCDOFields = objCDOConf.Fields

      objCDOFields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
      objCDOFields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "127.0.0.1"
      objCDOFields.Update

      设置 objCDOSYS.Configuration = objCDOConf
      objCDOSYS.MimeFormatted=True
      objCDOSYS.BodyPart.Charset = "Windows-1256"

      objCDOSYS.From = Trim(Request.Form("frmSender"))
      objCDOSYS.To = Trim(Request.Form("frmRecipient"))

      objCDOSYS.Subject =Request.Form("frmSubject")
      objCDOSYS.HTMLBody = Trim(Request.Form("frmMessage"))

      objCDOSYS.HTMLBodyPart.charset = "Windows-1256"
      objCDOSYS.Fields.update

      objCDOSYS.Send
      设置 objCDOFields = 无
      设置 objCDOConf = 无
      设置 objCDOSYS = 无
4

3 回答 3

5

更改为 UTF-8 字符集值得一试:-

objCDOSYS.HTMLBodyPart.charset = "UTF-8"

我认为这将导致 Jirapong 尝试的那种编码,但 CDOSYS 会为您完成。不幸的是,我知道它不适用于电子邮件地址中的显示名称。

于 2010-10-01T15:08:35.727 回答
1

您可能需要使用 '=?UTF-8?B?' 在主题和阿拉伯语 base64 编码字符串前面。

objCDOSYS.Subject = "=?UTF-8?B?" + Base64Encode(Request.Form("frmSubject"))

Base64Encode 函数可以在 - http://nolovelust.com/post/classic-asp-base64-encoder-decoder.aspx找到

注意:我自己也试过这个。所以不是100%确定。

于 2010-10-01T11:10:34.280 回答
0

对我来说,这 4 个项目的组合有效:

session.codepage=65001
Response.Charset = "utf-8" 
objMessage.HTMLBodyPart.Charset = "utf-8"
objMessage.BodyPart.Charset = "utf-8"
于 2020-10-16T09:39:11.420 回答