public SMTP()
        {
            System.Configuration.Configuration config = System.Configuration.ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
            MailSettingsSectionGroup mailSettings = NetSectionGroup.GetSectionGroup(config).MailSettings;
            string mailFrom = mailSettings.Smtp.From;
            string smtpServer = mailSettings.Smtp.Network.Host;
            int smtpPort = mailSettings.Smtp.Network.Port;
            string smtpUsername = mailSettings.Smtp.Network.UserName;
            string password = mailSettings.Smtp.Network.Password;            smtpMail = new SmtpClient(smtpServer, smtpPort);
            smtpMail.Credentials = new NetworkCredential(smtpUsername, password);
            this._mailFrom = mailFrom;
            this._displayName = smtpUsername;
        }        public SMTP(string smtpServer, string userName, string password)
            : this(null, smtpServer, userName, password)
        {
        }        /**//// <summary>
        /// 邮件发送类
        /// </summary>
        /// <param name="mailFrom">发件人地址</param>
        /// <param name="smtpServer">SMTP 服务器</param>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        public SMTP(string mailFrom, string smtpServer, string userName, string password)
            : this(mailFrom, mailFrom, smtpServer, userName, password)
        {        }        /**//// <summary>
        /// 邮件发送类
        /// </summary>
        /// <param name="mailFrom">发件人地址</param>
        /// <param name="displayName">显示的名称</param>
        /// <param name="smtpServer">SMTP 服务器</param>
        /// <param name="userName">用户名</param>
        /// <param name="password">密码</param>
        public SMTP(string mailFrom, string displayName, string smtpServer, string userName, string password)
            : this(mailFrom, displayName, smtpServer, 25, userName, password, false)
        {
        }        public SMTP(string mailFrom, string displayName, string smtpServer, int smtpPort, string userName, string password, bool smtpSsl)
        {
            this._mailFrom = mailFrom;
            this._displayName = displayName;
            smtpMail = new SmtpClient(smtpServer, smtpPort);
            smtpMail.Credentials = new NetworkCredential(userName, password);
            smtpMail.EnableSsl = smtpSsl;
        }        public Boolean Send(string mailTo, string mailSubject, string mailBody, MailPriority priority, bool isBodyHtml)
        {
            string[] mailTos = new string[] { mailTo };
            string[] attachments = null;
            System.Text.Encoding bodyEncoding = System.Text.Encoding.Default;
            return Send(mailTos, null, null, mailSubject, mailBody, attachments, priority, isBodyHtml, bodyEncoding);
        }        public Boolean Send(string mailTo, string mailSubject, string mailBody, string[] attachments, MailPriority priority, bool isBodyHtml, System.Text.Encoding bodyEncoding)
        {
            string[] mailTos = new string[] { mailTo };
            return Send(mailTos, null, null, mailSubject, mailBody, attachments, priority, isBodyHtml, bodyEncoding);
        }        public Boolean Send(string[] mailTos, string[] mailCcs, string[] mailBccs, string mailSubject, string mailBody, string[] attachments, MailPriority priority, bool isBodyHtml, System.Text.Encoding bodyEncoding)
        {
            return Send(this._mailFrom, this._displayName, mailTos, mailCcs, mailBccs, mailSubject, mailBody, attachments, priority, isBodyHtml, bodyEncoding);
        }--------------------------------------------------------------------------
问题:
 public SMTP(string smtpServer, string userName, string password)
            : this(null, smtpServer, userName, password)
        {
        }
1.这句中的 :this是个什么用法阿?2. 多次重载 Send()方法有什么意义呢?? 3. return Send(mailTos, null, null, mailSubject, mailBody, attachments, priority, isBodyHtml, bodyEncoding); 这个是什么用法?4. 为什么不在定义send()方法的时候一次性把参数加全呢??而要每次都要加几个参数进去呢?-------------------------------
刚学不久 能给解释详细就给我解释详细点吧 浪费您时间了,谢谢!!

解决方案 »

  1.   

    1. this是调用该类的另外一个构造函数,使用给定的参数,和另外的构造函数进行构造.
      

  2.   

    1.这句中的 :this是个什么用法阿?
    调用四个参数的构造函数this(null, smtpServer, userName, password)2. 多次重载 Send()方法有什么意义呢?? 
    考虑到不同参数的情况。写好了方便宜用,写不好让人眼花头晕。3. return Send(mailTos, null, null, mailSubject, mailBody, attachments, priority, isBodyHtml, bodyEncoding); 这个是什么用法?
    相当于:
    bool bFlag = Send(mailTos, null, null, mailSubject, mailBody, attachments, priority, isBodyHtml, bodyEncoding);
    return bFlag;4. 为什么不在定义send()方法的时候一次性把参数加全呢??而要每次都要加几个参数进去呢?
    同2;
      

  3.   

    sunrobust(诚以待人严以律己)   this前面加个冒号什么意思啊??
      

  4.   

    2.重载Send是为了对不同的需求实现(提供的参数不同,有些参数可能是默认的,就可以不提供了)
      

  5.   

    说错莫怪.....1.this是调用smtp类的具有4个参数的构造函数(null, smtpServer, userName, password)
    调用构造函数可以有两个关键字,一个是this,还有一个好像是base
    2.send多次重载是因为可能有不一样的发送信件的要求,比如说有的人带附件,有的不带什么的
    3.send函数有返回值的,返回值的类型是bool,return send()就是相当于bool b=send();
    return b;
    4.理由和2一样
      

  6.   

    3.这个是接着第2个问题的, 表示在这个函数里面,可以加上两个默认参数(都为null),通过另外一个重载函数实现.这是函数重载经常的用法
      

  7.   

    this前面加个冒号什么意思啊??表示要调用构造函数
    base同
      

  8.   

    public Boolean Send(string[] mailTos, string[] mailCcs, string[] mailBccs, string mailSubject, string mailBody, string[] attachments, MailPriority priority, bool isBodyHtml, System.Text.Encoding bodyEncoding)
            {
                return Send(this._mailFrom, this._displayName, mailTos, mailCcs, mailBccs, mailSubject, mailBody, attachments, priority, isBodyHtml, bodyEncoding);
            }这句中为什么在return Send()中 添加了几个
     public Boolean Send(string[] mailTos, string[] mailCcs, string[] mailBccs, string mailSubject, string mailBody, string[] attachments, MailPriority priority, bool isBodyHtml, System.Text.Encoding bodyEncoding)
    中并没有定义的 变量阿?
      

  9.   

    zahuifan(杂烩饭)  你的回答经典阿!
      

  10.   

    public Boolean Send(string[] mailTos, string[] mailCcs, string[] mailBccs, string mailSubject, string mailBody, string[] attachments, MailPriority priority, bool isBodyHtml, System.Text.Encoding bodyEncoding)
            {
                return Send(this._mailFrom, this._displayName, mailTos, mailCcs, mailBccs, mailSubject, mailBody, attachments, priority, isBodyHtml, bodyEncoding);
            }这句中为什么在return Send()中 添加了几个
     public Boolean Send(string[] mailTos, string[] mailCcs, string[] mailBccs, string mailSubject, string mailBody, string[] attachments, MailPriority priority, bool isBodyHtml, System.Text.Encoding bodyEncoding)
    中并没有定义的 变量阿?
    ----------------
    上面的几位朋友 给我解释下吧
      

  11.   

    Qim(莫名-想星星) 上面的代码不是全代码!8好意思阿!!全代码太多了!
      

  12.   

    return Send()中的参数是不是随便加的阿 不要与上面的 public Boolean Send()对应阿?
      

  13.   

    Red_angelX(当你XX你会想起谁) 虽然我刚学不久但是这些代码我大体都可以懂得,只是不太清晰 所以才到这里来向大家讨教.遇到问题我不应该回避对么?
      

  14.   

    不是,return send()是要有和他对应的函数的,也就是说有另外一个send的参数列表是Send(this._mailFrom, this._displayName, mailTos, mailCcs, mailBccs, mailSubject, mailBody, attachments, priority, isBodyHtml, bodyEncoding);
      

  15.   

    因为你这里
    public Boolean Send(string[] mailTos, string[] mailCcs, string[] mailBccs, string mailSubject, string mailBody, string[] attachments, MailPriority priority, bool isBodyHtml, System.Text.Encoding bodyEncoding)是一个函数,在这个函数里面又调用了另外的一个send函数
      

  16.   

    谢谢 xiaotupansy(中) !!
    :)
      

  17.   

    应该存在与之对应的函数实体。
    Send(this._mailFrom, this._displayName, mailTos, mailCcs, mailBccs, mailSubject, mailBody, attachments, priority, isBodyHtml, bodyEncoding);
      

  18.   

    Qim(莫名-想星星) 
     在 return Send()的时候  参数 写的顺序可以乱么??或者 可以添加一些参数么?