我想使用阿拉伯语文本作为主题发送电子邮件。
代码段将特殊字符正确转换为邮件正文的阿拉伯文本,但对邮件主题不能这样做。
我想知道我错过了什么?
Set objCDOSYS = Server.CreateObject("CDO.Message") Set objCDOConf = CreateObject("CDO.Configuration") Set 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 Set 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 Set objCDOFields = Nothing Set objCDOConf = Nothing Set objCDOSYS = Nothing
答案 0 :(得分:5)
更改为UTF-8字符集值得一试: -
objCDOSYS.HTMLBodyPart.charset = "UTF-8"
我认为这将导致Jirapong正在尝试的编码类型,但CDOSYS将为您完成。不幸的是,我知道它不适用于电子邮件地址中的显示名称。
答案 1 :(得分: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%肯定。
答案 2 :(得分:0)
对我来说,这四个项目的组合有效:
session.codepage=65001
Response.Charset = "utf-8"
objMessage.HTMLBodyPart.Charset = "utf-8"
objMessage.BodyPart.Charset = "utf-8"