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") ="[email protected]"
Mail.Configuration.Fields.Item ("http://schemas.microsoft.com/cdo/configuration/sendpassword") ="xxx"
Mail.Configuration.Fields.Update
Mail.Subject="ระบบแจ้งเตือนอัตโนมัติ"
Mail.From="[email protected]"
Mail.To="[email protected]"
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
%>
you have to use utf-8 Encoding for the following:
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)