收录日期:2020/11/30 13:13:46 时间:2016/06/10 10:41:46 标签:C#
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. this是调用该类的另外一个构造函数,使用给定的参数,和另外的构造函数进行构造.
希望给我回答问题的朋友暂时也不要离开,等我一会会,我可能对您的解释有不明白的地方还想继续请教.
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;

sunrobust(诚以待人严以律己)   this前面加个冒号什么意思啊??
2.重载Send是为了对不同的需求实现(提供的参数不同,有些参数可能是默认的,就可以不提供了)
冒号表示继承
说错莫怪.....

1.this是调用smtp类的具有4个参数的构造函数(null, smtpServer, userName, password)
调用构造函数可以有两个关键字,一个是this,还有一个好像是base
2.send多次重载是因为可能有不一样的发送信件的要求,比如说有的人带附件,有的不带什么的
3.send函数有返回值的,返回值的类型是bool,return send()就是相当于bool b=send();
return b;
4.理由和2一样
建议楼主找本基础的书看看先。如C#程序设计教程等。
3.这个是接着第2个问题的, 表示在这个函数里面,可以加上两个默认参数(都为null),通过另外一个重载函数实现.

这是函数重载经常的用法
this前面加个冒号什么意思啊??

表示要调用构造函数
base同
4.如果一次性写完,用起来就不灵活了啊,每次都要提供完整的参数列表
好了,我回答完了.呵呵

鼓励楼主多问,也要自己多琢磨哈
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)
中并没有定义的 变量阿?
嗯,这段代码,只能意会,不能言传...
zahuifan(杂烩饭)  你的回答经典阿!
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)
中并没有定义的 变量阿?


----------------
上面的几位朋友 给我解释下吧
编译错误!:(
Qim(莫名-想星星) 上面的代码不是全代码!8好意思阿!!全代码太多了!
勿在浮沙筑高台
Over!
return Send()中的参数是不是随便加的阿 不要与上面的 public Boolean Send()对应阿?
Red_angelX(当你XX你会想起谁) 虽然我刚学不久但是这些代码我大体都可以懂得,只是不太清晰 所以才到这里来向大家讨教.遇到问题我不应该回避对么?
不是,return send()是要有和他对应的函数的,也就是说有另外一个send的参数列表是Send(this._mailFrom, this._displayName, mailTos, mailCcs, mailBccs, 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)是一个函数,在这个函数里面又调用了另外的一个send函数

谢谢 xiaotupansy(中) !!
:)
应该存在与之对应的函数实体。
Send(this._mailFrom, this._displayName, mailTos, mailCcs, mailBccs, mailSubject, mailBody, attachments, priority, isBodyHtml, bodyEncoding);
不客气
Qim(莫名-想星星) 
 在 return Send()的时候  参数 写的顺序可以乱么??或者 可以添加一些参数么?
个人认为不行。
函数签名一致才能找到相应函数入口。
这么多人帮忙 !!可惜这是我最后的80分了  本来说只给一个人的  但是这么多热心人 不忍心让你们空手而归 随便点给你们吧!不要介意, 全当做个纪念吧!!!
没分以后要换id了可能!
Up

C#简单问题·· 美国道富和招行软开(融博)比较 泡泡排序 排出来第三个数老是0 找账号时发给webmaster@csdn.net的邮件怎么拒收了呢? 怎样把exe等外部文件 装入VC++工程中 yamon无法进入交互模式 Iphone4s所想 adoquery如何在程序中add fields? adoquery如何在程序中add fields? 咨询 程序员的未来是什么? 有人还在用Turbo C++ Explorer吗? jpa单向多对多关联,无法插入中间表数据 怎样制作这个界面 这期的非诚勿扰男嘉宾有悲催了 有图有真相 看不懂这什么代码 businessskinform 在任务栏上显示多个图标 谁有java方面的书要卖? 我想在自己的网页里添加股市走势图让它可以随股市变动 想深入了解操作系统该怎么做 用file_get_contents获取字符串问题 无限级联菜单 -- 开发互联网应用的新方法 SSH 注册 ajax验证ID重复 页面上js函数的问题 用了prototype.js和json js如何获取iframe里面的内容? dq21API -- 分享一个JavaScript 框架 拨号上网,出现提示错误代码含义 【AAAA】jquery根据段落复选的全选和不全选 •[1045] Access denied for user \'zxcvbn\'@\'localhost\' (using password: YES)求解决方法 sony电脑assist恢复完整系统,把分区都合并了,还有办法还原资料吗 javascript日历控件