本人使用以下方法发送邮件,在中文版的系统下没有问题,但是移植到英文版的系统就会出现中文乱码的问题,也知道是编码的问题,但不知道该怎么修改,请高手指点一下
Imports CDO
Public Class sendEmail
    Public Function send(ByVal toEmail, ByVal subject, ByVal content, ByVal htmlEnable) As Boolean
        Dim msg As CDO.Message = New CDO.Message
        Dim config As CDO.IConfiguration = msg.Configuration
        Dim oFields As ADODB.Fields = config.Fields
        Try
            msg.From = "[email protected] (管理员)"
            msg.To = toEmail
            msg.Subject = subject
            If htmlEnable = 1 Then
                msg.HTMLBody = content & "<br><a href='http://database/index.htm'>点击进行登录</a>"
                msg.HTMLBodyPart.Charset = "gb2312"
            Else
                msg.TextBody = content
                msg.BodyPart.Charset = "gb2312"
            End If
            oFields("http://schemas.microsoft.com/cdo/configuration/sendusing").Value = 2
            oFields("http://schemas.microsoft.com/cdo/configuration/sendusername").Value = "admin"
            oFields("http://schemas.microsoft.com/cdo/configuration/sendpassword").Value = "1234"
            oFields("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate").Value = 1
            oFields("http://schemas.microsoft.com/cdo/configuration/smtpserver").Value = "test"
            oFields("http://schemas.microsoft.com/cdo/configuration/languagecode").Value = "0x0804"
            oFields.Update()
            msg.Send()
            Return True
        Catch ex As Exception
            Dim test As String = ex.Message.ToString()
            Return False
        Finally
            msg = Nothing
            oFields = Nothing
        End Try
    End Function

解决方案 »

  1.   

    在WEB。CONFIG里加上这句试试
    <globalization requestEncoding="GB2312" responseEncoding="GB2312"/>
      

  2.   

    我是用jmail发送的。要是你不嫌麻烦,就改用jmail试试,也许就可以了呢利用asp.net+Jmail发送Email
      

  3.   

    现在不是.net2.0了吗?使用system.web.mail嘛。编码问题容易解决的
      

  4.   

    JMAIL啊。我的邮件服务器是个exchange服务器,不支持smtp的啊
      

  5.   

    我的发送邮件的代码:
            public static void SendMail(string[] mailaddresses,string title,string body)
            {
                System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
                mail.Subject = title;
                mail.From = new MailAddress("[email protected]");
                foreach (string address in mailaddresses)
                {
                    mail.To.Add(address);
                }
                mail.IsBodyHtml = true;
                mail.Body = body;
                mail.BodyEncoding = System.Text.Encoding.GetEncoding("gb2312");
                mail.SubjectEncoding = System.Text.Encoding.GetEncoding("gb2312");
                mail.Priority = MailPriority.High;
                Send(mail);
            }
            private static void Send(System.Net.Mail.MailMessage mail)
            {
                SmtpClient sc = new SmtpClient();
                sc.Credentials = new NetworkCredential(Config.GetConfigValue("SmtpUserName"), Config.GetConfigValue("SmtpUserPass"));
                sc.Host = Config.GetConfigValue("SmtpAddress");
                try
                {
                    sc.Send(mail);
                }
                catch
                {
                    ;
                }
            }
      

  6.   

                mail.BodyEncoding = System.Text.Encoding.GetEncoding("gb2312");
                mail.SubjectEncoding = System.Text.Encoding.GetEncoding("gb2312");
      

  7.   

    我用的是.net1.1啊,没有system.net.mail的
      

  8.   

    邮件内容因为已经加了 
    msg.HTMLBodyPart.Charset = "gb2312"
     msg.BodyPart.Charset = "gb2312"
    所以就没有乱码了
      

  9.   

    只有msg.From = "[email protected] (管理员)"
    subject会出现乱码,乱码表现为问号:??????????
      

  10.   

    msg.From和msg.Subject是不同的吧,From去掉管理员和括号,在Subject里加中文试试呢
      

  11.   

    就是subject有中文就会乱码,msg.From 中的“管理员”为乱码,其他正常
      

  12.   

    测试了一下,用jmail主题和发件人加中文都没有乱码,cdo没试
      

  13.   

    我也碰到类似问题了,非常郁闷:
    http://topic.csdn.net/u/20080327/14/753ef8e2-ed87-4d8d-a6ab-41ba9b8f49f5.html有的机器行有的不行,不知道产品是否要做登台测试了。
      

  14.   

    小灰(www.svnhost.cn),可以看看http://topic.csdn.net/u/20080327/14/753ef8e2-ed87-4d8d-a6ab-41ba9b8f49f5.html 
      

  15.   

    使用cdo在服务器是中文的机子上没有问题,但是在英文版的服务器上中文主题就会出现乱码
      

  16.   

    以下是乱码的邮件头:
    Received: from itd28 (192.168.14.28) by master.test.com (192.168.0.9) with
     Microsoft SMTP Server id 8.0.685.24; Thu, 17 Apr 2008 15:58:59 +0800
    From: OA??? <[email protected]>
    To: <[email protected]>
    Subject: ????????????,???????????
    Date: Thu, 17 Apr 2008 16:00:22 +0800
    Message-ID: <009201c8a061$16367a40$1c0ea8c0@itd28>
    MIME-Version: 1.0
    Content-Type: multipart/alternative;
    boundary="----=_NextPart_000_0093_01C8A0A4.245C0430"
    X-Mailer: Microsoft CDO for Windows 2000
    Thread-Index: AcigYRYZajkamnJGTfSvTUzmBMerFA==
    Content-Class: urn:content-classes:message
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2800.1914
    Return-Path: [email protected]不乱码的邮件头:
    Received: from itd26 (192.168.14.26) by master.test.com (192.168.0.9) with
     Microsoft SMTP Server id 8.0.685.24; Thu, 17 Apr 2008 15:54:36 +0800
    thread-index: AcigYHOO39VK8PFfQ6Kc6rhPF3yJWg==
    Thread-Topic: =?gb2312?B?z9bT0NK7uPbIzs7x0OjSqsT6zeqzyaOsx+u1x8K8z7XNs7340NCy6b+0?=
    From: =?gb2312?B?T0G53MDt1LE=?= <[email protected]>
    To: <[email protected]>
    Subject: =?gb2312?B?z9bT0NK7uPbIzs7x0OjSqsT6zeqzyaOsx+u1x8K8z7XNs7340NCy6b+0?=
    Date: Thu, 17 Apr 2008 15:55:49 +0800
    Message-ID: <9B6C91A12E3B4BA4AEB0E447E31DBD0C@itd26>
    MIME-Version: 1.0
    Content-Type: text/plain; charset="gb2312"
    Content-Transfer-Encoding: 8bit
    X-Mailer: Microsoft CDO for Windows 2000
    Content-Class: urn:content-classes:message
    Importance: normal
    Priority: normal
    X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.3300
    Return-Path: [email protected]
      

  17.   

    哈哈,各位,搞定啦,还是仔细对比邮件头才搞定啦,乱码的邮件头和不乱码的邮件头少了一部分,我就用直接header.add方式强行加入,好了散分,源代码发出来大家看看
    改过后的源代码如下:
    Imports System.Web
    Imports System.Web.Mail
    Public Class sendEmail
        Function sendMyMail(ByVal toEmail As String, ByVal subject As String, ByVal content As String) As Boolean
            Dim mail As New Mail.MailMessage
            mail.Subject = subject
            mail.To = toEmail
            mail.BodyFormat = MailFormat.Html
            mail.Body = content & "<br><a href='http://database/index.htm'>点击进行登录</a>"
            mail.BodyEncoding = System.Text.Encoding.GetEncoding("gb2312")
            mail.Headers.Add("From", "管理员<[email protected]>")
            mail.Headers.Add("Content-Type", "text/plain; charset=gb2312")
            mail.Headers.Add("Content-Transfer-Encoding", "8bit")
            mail.Priority = MailPriority.High
            mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusing", 2)
            mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "admin")
            mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "1234")
            mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", 1)
            mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpserver", "master")
            mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/languagecode", "0x0804")
            SmtpMail.SmtpServer = "master"
            Try
                SmtpMail.Send(mail)
                Return True
            Catch ex As Exception
                Dim temp As String = ex.Message.ToString()
                Return False
            Finally
                mail = Nothing
            End Try
            SmtpMail.Send(mail)
        End Function
    End Class