none
ASP.NET (C#) 发送邮件 标题和内容 中文乱码? RRS feed

  • 问题

  • 各位大侠

     

    用ASP.NET 发邮件,能成功,但是标题和内容如果有中文都是乱码

    怎么解决????

     

     

    1. 先添加COM 引用 "Microsoft CDO for Windows 2000 Library" .
    2. 发送邮件的代码:

    CDO.Message msg = new CDO.Message();

            
    string passWord="passWord";

            
    string from = "my@domain.com";

            
    string server = "192.168.33.2";


            msg.From 
    = from;
            msg.To 
    = from;
            msg.Subject 
    = "test mail";
            msg.TextBody 
    = "test.";

     

            CDO.IConfiguration iConfig 
    = msg.Configuration;

            ADODB.Fields fields 
    = iConfig.Fields;

     

            fields[
    "http://schemas.microsoft.com/cdo/configuration/sendusing"].Value = 2;

            fields[
    "http://schemas.microsoft.com/cdo/configuration/sendemailaddress"].Value = from;

            fields[
    "http://schemas.microsoft.com/cdo/configuration/sendpassword"].Value = passWord;

            fields[
    "http://schemas.microsoft.com/cdo/configuration/smtpauthenticate"].Value = 1;

            fields[
    "http://schemas.microsoft.com/cdo/configuration/smtpserver"].Value = server;

     

            fields.Update();

     

            
    try

            
    {

                msg.Send();

                msg 
    = null;

            }


            
    catch (Exception ex)

            
    {

                
    throw;

            }

    2010年10月15日 8:05

答案

  • .net 提供了邮件相关的类库,为什么还要再用CDO呢。

    	MailMessage message = new MailMessage();
    	message.From = new MailAddress("sender@foo.bar.com");
     
    	message.To.Add(new MailAddress("recipient1@foo.bar.com"));
    	message.To.Add(new MailAddress("recipient2@foo.bar.com"));
    	message.To.Add(new MailAddress("recipient3@foo.bar.com"));
     
    	message.CC.Add(new MailAddress("carboncopy@foo.bar.com"));
    	message.Subject = "This is my subject";
    	message.Body = "This is the content";
     
    	SmtpClient client = new SmtpClient();
    
    client.Send(message);
    

     

    注意设置编码。
    • 已建议为答案 Rainsuny 2010年10月16日 13:15
    • 已标记为答案 Mog Liang 2010年10月26日 5:45
    2010年10月16日 13:15
  • 你好:

    添加下方编码。

    message.BodyEncoding = System.Text.Encoding.UTF8; //邮件正文的编码方式

    希望对你有所帮助。


    Be stronger!
    • 已标记为答案 Mog Liang 2010年10月26日 5:45
    2010年10月18日 6:05

全部回复

  • 网站的验证方式是什么?Windows 还是 Forms?用户名和密码是 Hard-Code 进去的?
    Mark Zhou
    2010年10月15日 8:27
  • .net 提供了邮件相关的类库,为什么还要再用CDO呢。

    	MailMessage message = new MailMessage();
    	message.From = new MailAddress("sender@foo.bar.com");
     
    	message.To.Add(new MailAddress("recipient1@foo.bar.com"));
    	message.To.Add(new MailAddress("recipient2@foo.bar.com"));
    	message.To.Add(new MailAddress("recipient3@foo.bar.com"));
     
    	message.CC.Add(new MailAddress("carboncopy@foo.bar.com"));
    	message.Subject = "This is my subject";
    	message.Body = "This is the content";
     
    	SmtpClient client = new SmtpClient();
    
    client.Send(message);
    

     

    注意设置编码。
    • 已建议为答案 Rainsuny 2010年10月16日 13:15
    • 已标记为答案 Mog Liang 2010年10月26日 5:45
    2010年10月16日 13:15
  • 你好:

    添加下方编码。

    message.BodyEncoding = System.Text.Encoding.UTF8; //邮件正文的编码方式

    希望对你有所帮助。


    Be stronger!
    • 已标记为答案 Mog Liang 2010年10月26日 5:45
    2010年10月18日 6:05
  • 是,添加:message.BodyEncoding = System.Text.Encoding.UTF8;
    http://www.cnblogs.com/2gua
    2010年10月18日 22:24