当前位置:编程学习 > C#/ASP.NET >>

在程序里发送邮件为什么不能发中文啊

我在程序中写的发送邮件的程序,能够成功发送,但是在查看时,标题正确,邮件内容如果是中文的话就会出现“Error Reading Message or message with NULL body!! ”错误,如果内容是英文的话就显示正常。这个是什么意思啊,应该怎么解决啊 ?望各位帮忙
string name=this.TextBox1.Text;
string address=this.Textbox2.Text;
string lianxi=this.Textbox3.Text;
string xinxi=this.Textbox4.Text;
MailMessage mymail=new MailMessage();
mymail.To="收件人";
mymail.From="发件人";
mymail.Subject=name;

string items=name+address+lianxi+xinxi;
mymail.Body=items;


mymail.BodyFormat=MailFormat.Html;
mymail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1" ); 
mymail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "email" );
mymail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "password" ); 
mymail.Priority =MailPriority.High;

SmtpMail.SmtpServer ="www.ldate.org.cn";
SmtpMail.Send(mymail);
Response.Write("<script>alert('提交成功!');this.location='index.aspx';</script>");
--------------------编程问答-------------------- mymail.BodyEncoding = Encoding.GetEncoding("GB2312");
mymail.SubjectEncoding = Encoding.GetEncoding("GB2312"); --------------------编程问答--------------------  .net类库中发送电子邮件的方法总结
发送电子邮件是许多需要用户注册的网站的通用功能,通过正则表达式我们可以过滤掉不符合电子邮件格式的输入,但是仍没有办法确保用户填写的电子邮件地址一定是他本人真实有效的电子邮件地址,通常验证电子邮件真实有效的办法是:当用户填写的注册资料经过网站初步格式验证之后,用户并不能利用此帐号登录,系统会向用户注册时填写的电子邮件地址发送一封电子邮件,邮件中给出一个链接,只有当用户点击了这个链接之后才能登录到网站,如果用户填写的电子邮件地址不是真实有效的或者不是他本人的,就不会收到这封电子邮件,这样仍然不能登录,这一步一般称之为电子邮件激活。在.net类库中有两种发送电子邮件的方式,一种是在.net2.0以下版本中的做法,一种是.net2.0以上版本的做法。下面分别介绍这两种办法。 --------------------编程问答--------------------

using System; 
using System.Web.Mail; 

/// <summary> 
/// 说明:在.net2.0以下版本中发送电子邮件的方法示例 
/// 用到的类主要位于System.Web.Mail命名空间下 
/// 作者:周公 
/// 日期:2008-08-08 
/// 首发地址:http://blog.csdn.net/zhoufoxcn 
/// </summary> 
public class SendMail 

    public SendMail() 
    { 
         
    } 
    /// <summary> 
    /// 发送邮件 
    /// </summary> 
    /// <param name="to">收件人邮件地址</param> 
    /// <param name="from">发件人邮件地址</param> 
    /// <param name="subject">邮件主题</param> 
    /// <param name="body">邮件内容</param> 
    /// <param name="username">登录smtp主机时用到的用户名,注意是邮件地址'@'以前的部分</param> 
    /// <param name="password">登录smtp主机时用到的用户密码</param> 
    /// <param name="smtpHost">发送邮件用到的smtp主机</param> 
    public void Send(string to, string from, string subject, string body, string username, string password, string smtpHost) 
    { 
        MailMessage mail = new MailMessage(); 
        mail.To = to;//设置收件人地址 
        mail.From = from;//设置发件人地址 
        mail.Subject = subject;//设置邮件主题 
        mail.BodyFormat = MailFormat.Html;//设置邮件以HTML格式发送 
        mail.Body = body;//设置邮件内容 
        //设置发送邮件时需要身份验证 
        mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); 
        //设置登录邮件主机时的用户名,注意如果发件人地址是abc@def.com,则用户名是abc而不是abc@def.com 
        mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", userName); 
        //设置登录SMTP主机的用户密码 
        mail.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", password); 
        //设置发送邮件的SMTP主机 
        SmtpMail.SmtpServer = smtpHost; 
        //发送邮件,如果发送不成功会抛出异常 
        SmtpMail.Send(mail); 
    } 
}
--------------------编程问答--------------------

using System; 
using System.Net.Mail; 
using System.Net; 

/// <summary> 
/// 说明:在.net2.0以上版本中发送电子邮件的方法示例 
/// 用到的类主要位于System.Net.Mail和System.Net命名空间下 
/// 作者:周公 
/// 日期:2008-08-08 
/// 首发地址:http://blog.csdn.net/zhoufoxcn 
/// </summary> 
public class SendMail2 

    public SendMail2() 
    { 
    } 

    /// <summary> 
    /// 发送邮件 
    /// </summary> 
    /// <param name="to">收件人邮件地址</param> 
    /// <param name="from">发件人邮件地址</param> 
    /// <param name="subject">邮件主题</param> 
    /// <param name="body">邮件内容</param> 
    /// <param name="username">登录smtp主机时用到的用户名,注意是邮件地址'@'以前的部分</param> 
    /// <param name="password">登录smtp主机时用到的用户密码</param> 
    /// <param name="smtpHost">发送邮件用到的smtp主机</param> 
    public void Send(string to, string from, string subject, string body, string userName, string password, string smtpHost) 
    { 
        MailAddress from = new MailAddress(from); 
        MailAddress to = new MailAddress(to); 
        MailMessage message = new MailMessage(from, to); 
        message.Subject = subject;//设置邮件主题 
        message.IsBodyHtml = true;//设置邮件正文为html格式 
        message.Body = body;//设置邮件内容 
        SmtpClient client = new SmtpClient(smtpHost); 
        //设置发送邮件身份验证方式 
        //注意如果发件人地址是abc@def.com,则用户名是abc而不是abc@def.com 
        client.Credentials = new NetworkCredential(userName, password); 
        client.Send(message); 
    } 

--------------------编程问答-------------------- 周公的邮件发送方法就对了。我补充个配置问题,注意服务器安全软件配置。太多安全软件会对群发类的邮件进行过滤
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,