Sending email with Unicode in subject and content

http://www.cnode.cn/article.asp?id=283

CDO.Message是Windows 2003系统自带的一个邮件发送组件。往往大多数发送邮件都是邮件的内容体乱码,要解决这种问题只需要注意一下内容的编码方式以及为发送邮件的代码指定编码方式。而我遇到的这个问题倒是不常见,邮件的内容倒是没有产生乱码,而标题始终显示乱码。我在网上找了半天的资料也没有看到哪个参数是关于设置标题编码的。
在老沙同学的帮助下,终于找到可以调整标题编码的,在这里记录一下这次成功的经验。

程序代码
Public Sub SendCDO(ByVal IEmail,ByVal ITopic,ByVal ICont)
On Error Resume Next
Dim objCDO,objConfig,objConfigURL,objCDO_IBodyPart
Set objCDO=Server.CreateObject(“CDO.Message”)
Set objConfig=Server.CreateObject(“CDO.Configuration”)
objConfigURL=”http://schemas.microsoft.com/cdo/configuration/
With objConfig
.Fields(objConfigURL&”smtpserverport”)    = 25
.Fields(objConfigURL&”sendusing”)        = 2
.Fields(objConfigURL&”smtpserver”)        = SendServer
.Fields(objConfigURL&”smtpauthenticate”)= 1
.Fields(objConfigURL&”sendusername”)    = EmailUser
.Fields(objConfigURL&”sendpassword”)    = EmailPass
.Fields(objConfigURL&”languagecode”)    = CDO_Language
.Fields.Update()
End With
objCDO.Configuration= objConfig
objCDO.From         = SendEmail    ‘发送者邮箱地址
objCDO.To            = IEmail    ‘接收者邮箱地址
objCDO.Subject        = ITopic    ‘邮件标题
objCDO.HtmlBody        = ICont        ‘邮件主体内容
objCDO.BodyPart.Charset = EmailCode
objCDO.HTMLBodyPart.Charset = EmailCode
Set objCDO_IBodyPart = objCDO.HtmlBodyPart
objCDO_IBodyPart.GetDecodedContentStream
If Err<>0 Then
ErrCode=4
Else
objCDO.Send()
If Err <> 0 Then ErrCode=4
End If
Set objCDO = Nothing
End Sub

关键的代码是下面的两句,第一句是设置全局的。如果只指定第一句的话那内容会显示乱码,而第二句只是设置邮件内容体的编码的。两句一起使用才解决了乱码问题。

objCDO.BodyPart.Charset = EmailCode
objCDO.HTMLBodyPart.Charset = EmailCode

Advertisements
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s