需要在数据库中用CDO发送邮件,简要的VB简要代码如下:Dim objMail As CDO.Message
Dim objConfig As New CDO.Configuration
Set objMail = New CDO.Message
objConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.qq.com"
objConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpserverport") = 25
objConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2
objConfig.Fields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate") = 1
objConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendusername") = "10165462"
objConfig.Fields("http://schemas.microsoft.com/cdo/configuration/sendpassword") = "*******"       
'objConfig.Fields("http://schemas.microsoft.com/cdo/configuration/languagecode") = "0x0804"
objConfig.Fields.Update
Set objMail.Configuration = objConfig
objMail.Subject = "测试邮件"
objMail.From = "系统管理员"
objMail.To = "[email protected];[email protected];[email protected]"
objMail.HTMLBody = "Mail Body"
objMail.Sender = "[email protected]"
objMail.Send能正常收到邮件,邮件内容正常,标题也是正常,但是 objMail.From = "系统管理员"这里设置的系统管理员在QQ邮箱中不显示,在163中显示乱码,在手机上却能正常显示,这是怎么回事?
用SQL MAIL发送的邮件却是正常的.

解决方案 »

  1.   

    你没有设置邮件编码规则
    如UTF-8,GB2312之类
      

  2.   

    补充一下解决方法.邮件标题和正文没任何问题,只是发件人有问题.今天抓包看了一下邮件头,From的内容是用base64编码的,我尝试把正常邮件的邮件头加密过的的from内容复制过来,居然成功了.看来是from的内容没有被加密.什么原因引起的呢?打死都想不到:一定要在From后面再加上<任意邮箱地址>,比如这样:
    objMail.From = "系统管理员<[email protected]>" 这样就会给from的内容加密了.
    问题解决