Question

I've try to send Thai language e-mail through .asp (classic) page. The code is below

<%
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

%>

but the result e-mail I get is

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

Any body know how to fix, please help?

Ways to fix are (by ulluoink below)

Add this little-known bit-o-goodness to your pages:

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

Change xml:

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

You might also ensure your META tags don't lie:

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

And use this code pattern:

<%
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
%>
Was it helpful?

Solution

you have to use utf-8 Encoding for the following:

  • your asp page (the file has to be saved in utf-8 Encoding)
  • then set the Encoding in asp using:

    Response.CodePage = 65001

    Response.CharSet = "utf-8"

  • set utf-8 in the bodypart of your message object:

    Mail.BodyPart.Charset = "utf-8"

furthermore have a look here (hanselman about classic asp and utf-8) and here (example of cdo and utf-8)

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top