在网上查了些发送邮件的代码,但是都没有发送成功.提示说是: 无法解析此远程名称: 'http://smtp.163.com
代码如下:
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Net;
using System.Net.Mail;
using System.Text;
using System.Net.Sockets;
using System.IO;public partial class _Default : System.Web.UI.Page 
{
    protected void Page_Load(object sender, EventArgs e)
    {
        
    }
    protected void Button1_Click(object sender, EventArgs e)
    {
        try
        {
            if(sendMail())
            {
                Label1.Text="成功";
            }
            else
            {
                Label1.Text="失败";
            }
        }
        catch(Exception ex)
        {
            Label1.Text="失败:"+ex.Message;
        }
    }
    public bool sendMail()
    {
        //sendAgreement();
        Boolean isexec = false;
        string strBody, strSubject, strTO;
        strBody="网页内容";
        strSubject = "主题";
        strTO = "[email protected]";
        SmtpClient client = new SmtpClient("http://smtp.163.com");
        client.UseDefaultCredentials = true;
        client.Credentials = new System.Net.NetworkCredential("[email protected]", "12345687");
        MailMessage msg = new MailMessage();
        msg.SubjectEncoding = Encoding.UTF8;
        msg.BodyEncoding = Encoding.UTF8;
        msg.IsBodyHtml = true;
        //发送邮箱
        msg.From = new MailAddress("[email protected]");
        //对方邮箱
        msg.To.Add(new MailAddress(strTO, ""));
        msg.Priority = MailPriority.High;
        //主题
        msg.Subject = strSubject;
        //内容
        msg.Body = strBody;
        try
        {
            client.Send(msg);
            isexec = true;
        }
        catch (Exception ex) { isexec = false; }
        return isexec;
    }
请给于指点,谢谢!!!!

解决方案 »

  1.   

    参考
    http://blog.csdn.net/linaren/archive/2006/12/13/1441696.aspx
      

  2.   


    SmtpClient client = new SmtpClient("smtp.163.com");
      

  3.   

    借用一下周公的代码吧,呵呵...
    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);
            //设置发送邮件身份验证方式 
            //注意如果发件人地址是[email protected],则用户名是abc而不是[email protected] 
            client.Credentials = new NetworkCredential(userName, password);
            client.Send(message);
        }
    }
      

  4.   

    用smtp.163.com 早试过了.,.
     是另一个错,错误提示:ex
    {"邮箱不可用。 服务器响应为: Óû§±»Ëø¶¨"}
        [System.Net.Mail.SmtpException]: {"邮箱不可用。 服务器响应为: Óû§±»Ëø¶¨"}
        Data: {System.Collections.ListDictionaryInternal}
        HelpLink: null
        InnerException: null
        Message: "邮箱不可用。 服务器响应为: Óû§±»Ëø¶¨"
        ........
      

  5.   

    SmtpClient client = new SmtpClient("smtp.163.com");
    而且网易邮箱对于新用户不支持smtp/pop功能
    当然,VIP可以
      

  6.   

            SmtpClient client = new SmtpClient("http://smtp.163.com");邮件服务器设置应该是smtp.163.com
      

  7.   

    试试周公的。。SmtpClient client = new SmtpClient("smtp.163.com");换 gmail 和sina试试
      

  8.   

    我这个很好用,下载Jmail组件然后注册就OK了,包你满意,很多人用过。(注:最好用自己的服务器)public void sendEmail(string sender, string senderuser, string euser, string epwd, string receiver, string subject, string body, string eserver)
        {
            jmail.MessageClass jmMessage = new jmail.MessageClass();
            jmMessage.Charset = "GB2312";
            jmMessage.ISOEncodeHeaders = false;
            jmMessage.From = sender;
            jmMessage.FromName = senderuser;
            jmMessage.Subject = subject;
            jmMessage.MailServerUserName = euser;
            jmMessage.MailServerPassWord = epwd;
            jmMessage.AddRecipient(receiver, "", "");
           
            jmMessage.Body = body;
            if (jmMessage.Send(eserver, false))
            {
                Response.Write(" <script language=javascript>alert('发送成功') </script>");
            }
            else
            {
                Response.Write(" <script language=javascript>alert('发送失败,请仔细检查邮件服务器的设置是否正确!') </script>");
                jmMessage = null;
                return;
            }
        }//发送邮件到注册邮箱
    sendEmail("发送者@163.com", "发送者@163.com", "发送者@163.com", "密码", ”要接收的邮箱“, "标题", "内容", "邮箱服务器");注意:如果使用163或sina等服务器,发送邮箱好像是要96年以前注册的才行,还有就是用163或新浪等服务器的话一次发太多也不行的。
      

  9.   

    SmtpClient client = new SmtpClient("smtp.163.com");
    另外2007年前注册的163免费的邮箱可以发邮件,2007年后注册的不支持SMTP,还是发不出去的
      

  10.   

    不是说了么?!!!!
    SmtpClient client = new SmtpClient("smtp.163.com"); 提示这个错误!!!!!!!ex 
    {"邮箱不可用。 服务器响应为: Óû§±»Ëø¶¨"} 
        [System.Net.Mail.SmtpException]: {"邮箱不可用。 服务器响应为: Óû§±»Ëø¶¨"} 
        Data: {System.Collections.ListDictionaryInternal} 
        HelpLink: null 
        InnerException: null 
        Message: "邮箱不可用。 服务器响应为: Óû§±»Ëø¶¨" 
        ........
      

  11.   

    我换126的也不行..
     实在不行我不用网易的.,
    我换QQ邮箱...
     提示错误是:
    参数或变量中有语法错误。 服务器响应为: mail from address must be same as authorization user你们运行这些代码能行么>>??
      

  12.   

    不知道你水平如何,就给个简单的吧!
    using System;
    using System.Net.Mail;
    using System.Net;namespace SendMail
    {
        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);
                //设置发送邮件身份验证方式
                //注意如果发件人地址是[email protected],则用户名是abc而不是[email protected]
                client.Credentials = new NetworkCredential(userName, password);
                client.Send(message);
            }
        }
    }
      

  13.   

    SmtpClient client = new SmtpClient("http://smtp.163.com");
    应该是smtp.163.com
      

  14.   


    LZ啊!你把你代码里的http://smtp.163.com改成smtp.163.com 后,代码是没问题的问题就是出现在你用来发信的邮件服务器不支持SMTP了!!用企业邮局或者VIP的邮箱试试吧 
      

  15.   

    不是说QQ也支持smtp的么???
     我换成QQ的了也不行.!!!
      

  16.   

    说到发送邮件发送,先提一下SMTP(呵呵,高手就跳过这一段吧!)。 SMTP的全称是“Simple Mail Transfer Protocol”,即简单邮件传输协议。它是一组用于从源地址到目的地址传输邮件的规范,通过它来控制邮件的中转方式。SMTP 协议属于 TCP/IP 协议簇,它帮助每台计算机在发送或中转信件时找到下一个目的地。SMTP 服务器就是遵循 SMTP 协议的发送邮件服务器。
              再简单介绍一下名称空间(NameSpace)System.Web.Mail类库里所提供的邮件发送的对象、属性和方法
             (1)它有三个类:SmtpMail、MailMessage和MailAttachment。这三个对象本文的示例程序代码中都应用到了!
             1. MailMessage ,提供属性和方法来创建一个邮件消息对象。(Provides properties and methods for constructing an e-mail message.) 
              2. MailAttachments – 提供属性和方法来创建一个邮件附件对象。(Provides properties and methods for constructing an e-mail attachment.) 
             3. SmtpMail – 提供属性和方法通过使用windows 2000 CDOSYS 的消息组件的联合数据对象来发送邮件消息)。(Provides properties and methods for sending messages using the Collaboration Data Objects for Windows 2000 (CDOSYS) message component) 
            (2)各个类的属性。 
            1.先简单介绍SmtpMail的属性: SmtpServer -- SMTP的地址。 
             2.主要来介绍MailMessage对象的属性 
             From -- 发送邮件的地址 
             To -- 接受邮件的地址 
             Subject -- 邮件的标题 
             Priority -- 邮件的优先级(有效值为High,Low,Normal) 
             Attachments -- 返回一个集合,代表附件 
             Bcc -- 密送地址 
              Cc -- 抄送地址 
              Body -- 获取或是设置电子邮件消息的内容 
             BodyFormat -- 获取或是设置MailFormat的枚举值,此值指定消息体邮件的格式(Html格式、Text格式) 
             Bodyencoding -- 指定消息的编码方式编码(主要有Base64,UUencode) 
             其他几个不重要的省略。 随便提到密送和抄送的区别:密送就是你群发邮件时收邮件的人无法看到你发给了多少人以及他们的邮件地址,抄送就是群发邮件时收邮件的人则可以看到你发给了多少人以及他们的邮件地址。             
             (3)SmtpMail类的Send方法,它的目的就是发送邮件,有两个重载方法。 
             1. SmtpMail.Send("发送邮件的地址","接受邮件的地址","邮件的标题","邮件消息的内容") 这个方法很简单,不适合发送带附件的邮件。 
              2. SmtpMail.Send(MailMessage) 此方法复杂、灵活,适合发送附件,而且可以设置MailMessage对象的各种属性值。 如果我们用ASP.NET写一个邮件发送的程序,那么首先应该如何得到SMTP。有两种方法:第一种方法调用目前知名的邮件服务提供商的SMTP,比如新 浪、搜狐、网易的免费电子邮箱的SMTP;第二种方法是自己装一个SMTP虚拟服务器,这个在安装IIS时一起装上去的(安装过程就省略了:-) )。 
             一、在ASP.NET利用知名的邮件服务提供商的SMTP来发送邮件 
             首先需要去他们的邮件站点上注册免费邮箱,因为你要使用邮件服务提供商的SMTP,他们需要对身份进行验证,这样可以避免产生大量的垃圾邮件。假设我们在 新浪的邮件站点(mail.sina.com.cn)上注册了一个免费电子邮件,用户名是mysina,密码是chenjie.该帐号为虚构的,请使用自 己注册的用户名称和密码代替。我们在新浪的邮件站点获知它的SMTP地址是:smtp.sina.com.cn。我们需要向[email protected](";//源邮件地址 
            objMailMessage.To = "[email protected]";//目的邮件地址,也就是发给我哈 
            objMailMessage.Subject = "邮件发送标题:你好";//发送邮件的标题 
            objMailMessage.Body = "邮件发送标内容:测试一下是否发送成功!";//发送邮件的内容 
            objMailMessage.Attachments.Add( objMailAttachment );//将附件附加到邮件消息对象中 
            //接着利用sina的SMTP来发送邮件,需要使用Microsoft .NET Framework SDK v1.1和它以上的版本 
             //基本权限 
            objMailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/smtpauthenticate", "1"); 
            //用户名 
             objMailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendusername", "mysina") ; 
             //密码 
             objMailMessage.Fields.Add("http://schemas.microsoft.com/cdo/configuration/sendpassword", "chenjie"); 
             /如果没有上述三行代码,则出现如下错误提示:服务器拒绝了一个或多个收件人地址。服务器响应为: 554 : Client host rejected: Access denied 
            //SMTP地址 
             SmtpMail.SmtpServer = "smtp.sina.com.cn"; 
             //开始发送邮件 
            SmtpMail.Send( objMailMessage ); 
             //核心代码结束 
              二、在ASP.NET利用本机的SMTP虚拟服务器的SMTP来发送邮件 
             首先说一下SMTP配置。 
             (1)右键点击“SMTP虚拟服务器”选择“属性”->在“常规”选项卡中设置“IP地址(P)”,我设置的是192.168.1.100。 
             (2)选择“访问”选项卡,点击“中继”,选上“仅以下列表”(默认是被选上的),点击“添加”,在“单台计算机”中加入192.168.1.100。 
              提示,如果没有完成(2),则会出现大家常见的一种错误提示:服务器拒绝了一个或多个收件人地址。服务器响应为: 550 5.7.1 Unable to relay for [email protected] (友情提示一下:错误中的邮件地址有所不同) 然后开始核心代码,其实和方法(一)的差不多。与(一)的主要区别在于:1.SMTP的不同,2.objMailMessage.From中本方法可以随 便填写,但是(一)中别随便填写那么利用ASP.NET(C#)发送邮件的核心代码如下: 
             /核心代码开始 
             using System.Web.Mail; 
             MailMessage objMailMessage; 
             MailAttachment objMailAttachment; 
             // 创建一个附件对象 
              objMailAttachment = new MailAttachment( "d:\\test.txt" );//发送邮件的附件 
             // 创建邮件消息 
             objMailMessage = new MailMessage(); 
             objMailMessage.From = "[email protected]";//源邮件地址 
             objMailMessage.To = "[email protected]";//目的邮件地址,也就是发给我哈 
             objMailMessage.Subject = "邮件发送标题:你好";//发送邮件的标题 
             objMailMessage.Body = "邮件发送标内容:测试一下是否发送成功!";//发送邮件的内容 
             objMailMessage.Attachments.Add( objMailAttachment );//将附件附加到邮件消息对象中 
             //SMTP地址 
             SmtpMail.SmtpServer = "192.168.1.100"; 
             //开始发送邮件 
             SmtpMail.Send( objMailMessage );  
              以上两种方法介绍到这里。最简单的利用上面方法是在页面添加一个服务器按钮,把除引用的语句放到按钮单击事件中去。当然,别忘记了引用的语句放在最上面。 
              方法一的测试是完全正确,没有任何问题,但是方法二却导致邮件无法正确收到(***@sina.com),或者收到后也被放到垃圾邮件中去了(发往[email protected])。 
      

  17.   

    可以了.,.是邮件问题.,
     换一个早一点注册的163邮箱就行了.,.
    不过不大明白,是2007以前注册的就行么???
     我记得那个邮箱是07年以前注册的好像!!
     在邮箱面版找了好久,没发现邮箱的注册时间!!!
    还有一个就是QQ邮箱,不是说QQ邮箱支持的么??
     怎么我用不行呢.,有知道的Mail To [[email protected]][email protected][/email]
    结帖先!!!