亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

SmtpClient發郵件時為什么用MailMessage.From而不用MailMessage.Sender

2019-11-14 14:11:58
字體:
來源:轉載
供稿:網友

今天在看C#高級編程(第9版)的時候,在768頁看到這樣的一段代碼

SmtpClient sc = new SmtpClient();sc.Host = "郵箱服務器地址";MailMessage mm = new MailMessage();mm.Sender = new MailAddress("公司郵箱", "發件人");mm.To.Add(new MailAddress("我的163郵箱", "接收人"));mm.CC.Add(new MailAddress("抄送的郵箱", "抄送人"));mm.Subject = "測試程序發送郵件";mm.Body = "<b>我發送了郵件---我是程序發出的</b>";mm.IsBodyHtml = true;mm.PRiority = MailPriority.High;sc.Send(mm);

以前沒有做過Email項目,所以,直接就敲到了VS下,編譯,但是出問題,報了個錯

我心思是沒有指定發件人的用戶名和密碼,因此又增加了一行代碼

sc.Credentials = new System.Net.NetworkCredential("發件郵箱", "密碼");

但是依然報這個錯誤,繼續找辦法吧,看了看網上其他人發郵件的代碼,發現他們用的是From,因此,又增加了一行代碼

mm.From = new MailAddress("公司郵箱", "發件人");

發現頓時就好使了,而且兩個可以同時存在,或單獨From存在,都好使。

這&hellip;…我就郁悶了,因為F12定位到定義,From和Sender的注解里面只差了一個字

一個是發信人,一個是發件人,而且From是發信人,Sender是發件人,一字之差不應該Sender不好使,From好使啊,疑惑增加ing……

那就用ILSpy反編譯看一下吧

我擦,更加疑惑,不可能只是因為From比Sender多了一個判斷是否為null就用From吧。

那就繼續看反編譯的代碼吧。在SmtpClient里找到Send方法,代碼如下

public void Send(MailMessage message)        {            if (Logging.On)            {                Logging.Enter(Logging.Web, this, "Send", message);            }            if (this.disposed)            {                throw new ObjectDisposedException(base.GetType().FullName);            }            try            {                if (Logging.On)                {                    Logging.PrintInfo(Logging.Web, this, "Send", "DeliveryMethod=" + this.DeliveryMethod.ToString());                }                if (Logging.On)                {                    Logging.Associate(Logging.Web, this, message);                }                SmtpFailedRecipientException ex = null;                if (this.InCall)                {                    throw new InvalidOperationException(SR.GetString("net_inasync"));                }                if (message == null)                {                    throw new ArgumentNullException("message");                }                if (this.DeliveryMethod == SmtpDeliveryMethod.Network)                {                    this.CheckHostAndPort();                }                MailAddressCollection mailAddressCollection = new MailAddressCollection();                if (message.From == null)                {                    throw new InvalidOperationException(SR.GetString("SmtpFromRequired"));                }                if (message.To != null)                {                    foreach (MailAddress current in message.To)                    {                        mailAddressCollection.Add(current);                    }                }                if (message.Bcc != null)                {                    foreach (MailAddress current2 in message.Bcc)                    {                        mailAddressCollection.Add(current2);                    }                }                if (message.CC != null)                {                    foreach (MailAddress current3 in message.CC)                    {                        mailAddressCollection.Add(current3);                    }                }                if (mailAddressCollection.Count == 0)                {                    throw new InvalidOperationException(SR.GetString("SmtpRecipientRequired"));                }                this.transport.IdentityRequired = false;                try                {                    this.InCall = true;                    this.timedOut = false;                    this.timer = new Timer(new TimerCallback(this.TimeOutCallback), null, this.Timeout, this.Timeout);                    string pickupDirectory = this.PickupDirectoryLocation;                    switch (this.DeliveryMethod)                    {                    case SmtpDeliveryMethod.Network:                        goto IL_235;                    case SmtpDeliveryMethod.SpecifiedPickupDirectory:                        break;                    case SmtpDeliveryMethod.PickupDirectoryFromIis:                        pickupDirectory = IisPickupDirectory.GetPickupDirectory();                        break;                    default:                        goto IL_235;                    }                    if (this.EnableSsl)                    {                        throw new SmtpException(SR.GetString("SmtpPickupDirectoryDoesnotSupportSsl"));                    }                    bool allowUnicode = this.IsUnicodeSupported();                    this.ValidateUnicodeRequirement(message, mailAddressCollection, allowUnicode);                    MailWriter mailWriter = this.GetFileMailWriter(pickupDirectory);                    goto IL_275;                    IL_235:                    this.GetConnection();                    allowUnicode = this.IsUnicodeSupported();                    this.ValidateUnicodeRequirement(message, mailAddressCollection, allowUnicode);                    mailWriter = this.transport.SendMail(message.Sender ?? message.From, mailAddressCollection, message.BuildDeliveryStatusNotificationString(), allowUnicode, out ex);                    IL_275:                    this.message = message;                    message.Send(mailWriter, this.DeliveryMethod > SmtpDeliveryMethod.Network, allowUnicode);                    mailWriter.Close();                    this.transport.ReleaseConnection();                    if (this.DeliveryMethod == SmtpDeliveryMethod.Network && ex != null)                    {                        throw ex;                    }                }                catch (Exception ex2)                {                    if (Logging.On)                    {                        Logging.Exception(Logging.Web, this, "Send", ex2);                    }                    if (ex2 is SmtpFailedRecipientException && !((SmtpFailedRecipientException)ex2).fatal)                    {                        throw;                    }                    this.Abort();                    if (this.timedOut)                    {                        throw new SmtpException(SR.GetString("net_timeout"));                    }                    if (ex2 is SecurityException || ex2 is AuthenticationException || ex2 is SmtpException)                    {                        throw;                    }                    throw new SmtpException(SR.GetString("SmtpSendMailFailure"), ex2);                }                finally                {                    this.InCall = false;                    if (this.timer != null)                    {                        this.timer.Dispose();                    }                }            }            finally            {                if (Logging.On)                {                    Logging.Exit(Logging.Web, this, "Send", null);                }            }        }

看代碼里我注紅色的部分,可以發現,Send方法,必須要求From存在,如果From不存在的話,就會拋出異常,但是并沒有強制要求Sender存在,Sender可以存在,如果Sender存在就用Sender,不存在就用From,但是必須保證From存在。

 


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品久久久久久久大神国产| 日韩高清欧美高清| 日韩中文字幕在线精品| 久久夜色撩人精品| 91亚洲人电影| 国产欧美在线播放| 亚洲字幕在线观看| 日韩大片在线观看视频| 91免费的视频在线播放| www.亚洲一区| 激情av一区二区| 亚洲aa中文字幕| 欧美精品精品精品精品免费| 自拍亚洲一区欧美另类| 久久精品免费电影| 午夜精品久久久久久久99热浪潮| 欧美片一区二区三区| 亚洲欧美日韩国产成人| 成人亚洲综合色就1024| 久久国产精品99国产精| 欧美电影在线观看完整版| 中文字幕精品av| 欧美巨大黑人极品精男| 国产成人97精品免费看片| 91久久久久久久久久久久久| 色av中文字幕一区| www国产91| 另类少妇人与禽zozz0性伦| 久久99久久99精品中文字幕| 欧美日韩中文字幕在线视频| 97久久国产精品| 色偷偷9999www| 中文字幕一精品亚洲无线一区| 亚洲第一区第二区| 欧美性猛交xxxx乱大交蜜桃| 国产欧美久久久久久| 亚洲一区二区三区四区在线播放| 欧美重口另类videos人妖| 久久精品国产成人精品| 久久久久久久久爱| 一区二区三区国产视频| 国产美女91呻吟求| 亚洲成人久久一区| 久久夜色精品国产欧美乱| 国产精品18久久久久久首页狼| 久久久免费精品视频| 国产91精品久久久久久久| 久久在线免费观看视频| 久久视频免费观看| 少妇高潮久久久久久潘金莲| 成人精品福利视频| 日韩国产欧美精品在线| 国产精品香蕉国产| 国产精品欧美风情| 国产精品久久99久久| 欧美电影在线观看网站| 一区二区亚洲精品国产| 中文字幕国产日韩| 欧美视频裸体精品| 亚洲激情成人网| 国产精品美女视频网站| 国自产精品手机在线观看视频| 日韩av免费在线观看| 美女少妇精品视频| 全亚洲最色的网站在线观看| 人体精品一二三区| 欧美激情综合亚洲一二区| 国产精品亚洲аv天堂网| 日韩精品视频免费专区在线播放| 美女视频久久黄| 欧美黑人视频一区| 日韩精品有码在线观看| 久久中文久久字幕| 97香蕉超级碰碰久久免费的优势| www.欧美精品| 国产精品最新在线观看| 亚洲欧美另类人妖| 久久精品视频在线观看| 亚洲跨种族黑人xxx| 亚洲va久久久噜噜噜久久天堂| 91精品国产色综合久久不卡98| 日韩激情av在线免费观看| 国产成人精品在线观看| 色阁综合伊人av| 91精品久久久久久| 亚洲精选中文字幕| 国产精品久久久久久久久借妻| 日韩高清av一区二区三区| 日韩欧美国产成人| 美女啪啪无遮挡免费久久网站| 欧美视频一区二区三区…| 91在线高清视频| 国产精品久久久久久久久久久新郎| 亚洲一区二区在线| 欧美黄色成人网| 国产精品免费电影| 茄子视频成人在线| 亚洲国产成人精品久久| 国产91露脸中文字幕在线| 欧美性猛交xxxx黑人猛交| 亚洲精品91美女久久久久久久| 久久精品电影网站| 欧美天堂在线观看| 国产69精品久久久久9| 国产精品自拍小视频| 国产精品ⅴa在线观看h| 在线成人激情视频| 日韩中文字幕在线免费观看| 精品国产一区二区三区四区在线观看| 欧美精品www在线观看| 国产91成人video| 久久激情五月丁香伊人| 欧美性猛交xxxx富婆| 欧美激情亚洲激情| 久久精品国产综合| 欧美激情奇米色| 亚洲欧美国产视频| 91欧美精品成人综合在线观看| 午夜精品一区二区三区在线视| 欧美理论电影网| 成人高清视频观看www| 18一19gay欧美视频网站| 欧美在线亚洲在线| 日韩福利伦理影院免费| 国产精品91免费在线| 琪琪亚洲精品午夜在线| 午夜精品免费视频| 成人激情在线播放| 成人黄色免费网站在线观看| 亚洲成人亚洲激情| 国产丝袜一区二区三区免费视频| 97视频在线观看亚洲| 久久久久久香蕉网| 国产精品久久久久久婷婷天堂| 久久99精品久久久久久琪琪| 欧美区二区三区| 日韩天堂在线视频| www.欧美免费| 国产精品久久久91| 成人黄色短视频在线观看| 国产日韩中文在线| 国产精品成久久久久三级| 亚洲欧美日本伦理| 91欧美激情另类亚洲| 奇门遁甲1982国语版免费观看高清| 操日韩av在线电影| 欧美性xxxxx| 国产精品爽黄69| 性欧美在线看片a免费观看| 国产91色在线|| 91精品国产综合久久香蕉的用户体验| 国产一区二区三区四区福利| 久久精品人人爽| 亚洲国产91精品在线观看| 亚洲成人精品视频在线观看| 欧美日韩一二三四五区| 欧美性受xxxx黑人猛交| 精品视频久久久久久久| 亚洲天堂第二页| 91禁外国网站| 欧美亚洲国产视频| 亚洲欧美在线一区二区| 亚洲人午夜色婷婷| 国产精品劲爆视频|