1

我尝试通过 .asp(经典)页面发送泰语电子邮件。代码如下

<%
response.write(GetLocale() & "<br />")
SetLocale(1054)
response.write(GetLocale())


Set Mail = CreateObject("CDO.Message")

Mail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
Mail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserver") ="smtp.gmail.com"
Mail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 465

Mail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpusessl") = 1

Mail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 60

Mail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
Mail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendusername") ="xxx@gmail.com"
Mail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") ="xxx"

Mail.Configuration.Fields.Update

Mail.Subject="ระบบแจ้งเตือนอัตโนมัติ"
Mail.From="xxx@gmail.com"
Mail.To="xxx@hotmail.com"
Mail.TextBody="สวัสดี"



Mail.Send
Set Mail = Nothing

%>

但我收到的结果电子邮件是

???????????????????????? ??????????????????????????????????????????????????? ????????????????????? ??????????????????????????????????????????????????? ???

哪位大神知道怎么解决,求大神帮忙?

修复方法是(通过下面的 ulluoink)

将这个鲜为人知的小东西添加到您的页面中:

Response.CodePage = 65001
Response.CharSet = "utf-8"

更改xml:

<?xml version="1.0" encoding="UTF-8" ?>.

您还可以确保您的 META 标签不会说谎:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

并使用此代码模式:

<%
function TestEMail(sFrom, sTo, sSubject, sBody,  sBcc)
    Set objMail = Server.CreateObject("CDO.Message")
    Set objConf = Server.CreateObject("CDO.Configuration") 
    Set objFields = objConf.Fields
    With objFields
        .Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserver")  =  "mail.secureserver.net"
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpconnectiontimeout") = 10 
        .Item("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
        .Update 
    End With

    With objMail
        Set .Configuration = objConf
        .BodyPart.Charset = "utf-8"
        .From = sFrom
        .To = sTo
        .Subject = sSubject
        .TextBody = sBody
        if sBcc <> "" then .Bcc = sBcc
        End With

    objMail.Send
    Set objFields = Nothing
    Set objConf = Nothing
    Set objMail = Nothing
End function
%>
4

1 回答 1

1

您必须对以下内容使用 utf-8 编码:

  • 您的 asp 页面(文件必须以 utf-8 编码保存)
  • 然后使用 asp 设置编码:

    Response.CodePage = 65001

    Response.CharSet = "utf-8"

  • 在消息对象的正文部分设置 utf-8:

    Mail.BodyPart.Charset = "utf-8"

此外看看这里(hanselman 关于经典 asp 和 utf-8)和这里(cdo 和 utf-8 的示例)

于 2014-01-16T10:06:09.840 回答