婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 深入Lumisoft.NET組件與.NET API實現郵件發送功能的對比分析

深入Lumisoft.NET組件與.NET API實現郵件發送功能的對比分析

熱門標簽:電銷語音自動機器人 鄭州400電話辦理 聯通 五常地圖標注 智能電話營銷外呼系統 凱立德導航官網地圖標注 戶外地圖標注軟件手機哪個好用 萊蕪外呼電銷機器人價格 長春呼叫中心外呼系統哪家好 地圖標注和認領

我在另一篇文章《深入Lumisoft.NET實現郵件發送功能的方法詳解》有大致對這個Lumisoft.NET組件的使用進行了介紹,當然Lumisoft.NET組件除了提供郵件發送功能外,還提供了郵件接收等功能的處理(包括基于POP3協議和IMAP協議),而.NET則除了提供SMTP協議功能外,則沒有提供POP3協議處理的相關類庫,因此收取郵件這需要自己進行封裝(需要也可以參考codeproject.com上的相關文章)。

1、.NET的郵件發送功能實現
.NET本身封裝了一個SmtpClient類以及相關的郵件對象類,這樣利用這些類庫,也可以方便實現郵件的發送功能的了。

如添加發送人地址,抄送地址,以及暗送地址(多個地址用逗號分開)代碼如下。

復制代碼 代碼如下:

string toEmails = mailInfo.ToEmail;

            string bcc = "";
            mailInfo.RecipientBCC.ForEach(obj => bcc += string.Format("{0},", obj));
            bcc = bcc.Trim(',');

            string cc = "";
            mailInfo.RecipientCC.ForEach(obj => cc += string.Format("{0},", obj));
            cc = cc.Trim(',');

            MailMessage mail = new MailMessage(settingInfo.MailFrom, toEmails);
            if (!string.IsNullOrEmpty(bcc))
            {
                mail.Bcc.Add(bcc);
            }
            if (!string.IsNullOrEmpty(cc))
            {
                mail.CC.Add(cc);
            }


.NET的附件和嵌入式資源由對象Attachment和LinkedResource進行管理,他們的利用代碼如下所示:
復制代碼 代碼如下:

//附件
            foreach (string fileName in mailInfo.Attachments)
            {
                mail.Attachments.Add(new Attachment(fileName));
            }

            //嵌入資源
            AlternateView view = AlternateView.CreateAlternateViewFromString(mailInfo.Body, Encoding.UTF8, MediaTypeNames.Text.Html);
            foreach (LinkedAttachementInfo link in mailInfo.EmbedObjects)
            {
                LinkedResource resource = new LinkedResource(link.Stream, link.MimeType);
                resource.ContentId = link.ContentId;
                view.LinkedResources.Add(resource);
            }
            mail.AlternateViews.Add(view);


發送郵件的其他部分代碼如下所示
復制代碼 代碼如下:

mail.IsBodyHtml = mailInfo.IsBodyHtml;
            mail.BodyEncoding = Encoding.UTF8;
            mail.Subject = mailInfo.Subject;
            mail.SubjectEncoding = Encoding.UTF8;

            //發送賬戶設置信息
            SmtpClient client = new SmtpClient();
            client.Host = settingInfo.SmtpServer;
            client.Port = settingInfo.SmptPort;
            client.UseDefaultCredentials = false;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.Credentials = new NetworkCredential(settingInfo.SmtpUser, settingInfo.SmtpPass);

            bool success = false;
            try
            {
                client.Send(mail);
                success = true;
            }
            catch (Exception ex)
            {
                LogTextHelper.Error(ex);
                //throw;
            }


上面利用.net的SmtpClient發送郵件操作的完整代碼如下:
復制代碼 代碼如下:

/// summary>
        /// 發送外部郵件(系統配置,系統郵件)
        /// /summary>
        /// param name="mailInfo">發送郵件信息/param>
        /// returns>/returns>
        public CommonResult Send(MailInfo mailInfo)
        {
            CommonResult result = new CommonResult();
            try
            {
                AppConfig config = new AppConfig();
                string MailDomain = config.AppConfigGet("MailDomain");
                string MailUsername = config.AppConfigGet("MailUsername");
                string MailPassword = config.AppConfigGet("MailPassword");
                string MailPort = config.AppConfigGet("MailPort");
                string MailFrom = config.AppConfigGet("MailFrom");
                int port = 25;
                int.TryParse(MailPort, out port);

                SmtpSettingInfo settingInfo = new SmtpSettingInfo(MailDomain, port,
                    MailUsername, MailPassword, MailFrom);

                result.Success = PrivateSendEmail(mailInfo, settingInfo);
            }
            catch (Exception ex)
            {
                result.ErrorMessage = ex.Message;
                throw;
            }

            return result;
        }

        /// summary>
        /// 通用發送郵件操作
        /// /summary>
        private static bool PrivateSendEmail(MailInfo mailInfo, SmtpSettingInfo settingInfo)
        {         
            string toEmails = mailInfo.ToEmail;

            string bcc = "";
            mailInfo.RecipientBCC.ForEach(obj => bcc += string.Format("{0},", obj));
            bcc = bcc.Trim(',');

            string cc = "";
            mailInfo.RecipientCC.ForEach(obj => cc += string.Format("{0},", obj));
            cc = cc.Trim(',');

            MailMessage mail = new MailMessage(settingInfo.MailFrom, toEmails);
            if (!string.IsNullOrEmpty(bcc))
            {
                mail.Bcc.Add(bcc);
            }
            if (!string.IsNullOrEmpty(cc))
            {
                mail.CC.Add(cc);
            }

            //附件
            foreach (string fileName in mailInfo.Attachments)
            {
                mail.Attachments.Add(new Attachment(fileName));
            }

            //嵌入資源
            AlternateView view = AlternateView.CreateAlternateViewFromString(mailInfo.Body, Encoding.UTF8, MediaTypeNames.Text.Html);
            foreach (LinkedAttachementInfo link in mailInfo.EmbedObjects)
            {
                LinkedResource resource = new LinkedResource(link.Stream, link.MimeType);
                resource.ContentId = link.ContentId;
                view.LinkedResources.Add(resource);
            }
            mail.AlternateViews.Add(view);
            mail.IsBodyHtml = mailInfo.IsBodyHtml;
            mail.BodyEncoding = Encoding.UTF8;
            mail.Subject = mailInfo.Subject;
            mail.SubjectEncoding = Encoding.UTF8;

            //發送賬戶設置信息
            SmtpClient client = new SmtpClient();
            client.Host = settingInfo.SmtpServer;
            client.Port = settingInfo.SmptPort;
            client.UseDefaultCredentials = false;
            client.DeliveryMethod = SmtpDeliveryMethod.Network;
            client.Credentials = new NetworkCredential(settingInfo.SmtpUser, settingInfo.SmtpPass);

            bool success = false;
            try
            {
                client.Send(mail);
                success = true;
            }
            catch (Exception ex)
            {
                LogTextHelper.Error(ex);
                //throw;
            }

            string message = string.Format("發送給【{0}】的郵件“{1}”,{2},時間:{3}",
                mailInfo.ToEmail[0], mailInfo.Subject, success ? "發送成功" : "發送失敗", DateTime.Now);
            LogTextHelper.Info(message);

            return success;
        }


2、基于Lumisoft.NET組件的郵件發送功能實現

基于Lumisoft.NET組件的郵件發送,也是一種很常用的,因為這個開源組件非常強大,經常可以在一些程序中被使用。

這個發送郵件的功能主要是利用SMTP_Client類來實現的,如下代碼所示。注意其中的Authenticate函數已經被舍棄,可以使用Auth方法進行驗證。但是函數參數有所不同,根據驗證對象,使用不同的驗證方式,一般選擇AUTH_SASL_Client_Plain對象即可。

復制代碼 代碼如下:

public bool Send()
        {
            bool sended = false;
            using (SMTP_Client client = new SMTP_Client())
            {
                client.Connect(smtpServer, smtpPort, smtpUseSsl);
                client.EhloHelo(smtpServer);
                var authhh = new AUTH_SASL_Client_Plain(username, password);
                client.Auth(authhh);
                //client.Authenticate(username, password);
                //string text = client.GreetingText;
                client.MailFrom(from, -1);
                foreach (string address in toList.Keys)
                {
                    client.RcptTo(address);
                }

                //采用Mail_Message類型的Stream
                Mail_Message m = Create_PlainText_Html_Attachment_Image(toList, ccList, from, fromDisplay, subject, body, attachments);
                using (MemoryStream stream = new MemoryStream())
                {
                    m.ToStream(stream, new MIME_Encoding_EncodedWord(MIME_EncodedWordEncoding.Q, Encoding.UTF8), Encoding.UTF8);
                    stream.Position = 0;
                    client.SendMessage(stream);

                    sended = true;
                }
                if (m != null)
                {
                    m.Dispose();
                }

                client.Disconnect();
            }
            return sended;
        }


構造用于SMTP發送的數據,可以使用Mail_Message 對象,也可以使用Mime對象,雖然讀都可以實現發送功能,不過Mime對象是舍棄的對象了。

構造Mail_Message對象后,創建用于發送的格式要轉換為Stream對象。轉換為發送的Stream操作如下所示。

復制代碼 代碼如下:

using (MemoryStream stream = new MemoryStream())
{
        m.ToStream(stream, new MIME_Encoding_EncodedWord(MIME_EncodedWordEncoding.Q, Encoding.UTF8), Encoding.UTF8);
        stream.Position = 0;
        client.SendMessage(stream);

        sended = true;
 }


構造Mail_Message格式的郵件操作如下所示。
復制代碼 代碼如下:

private Mail_Message Create_PlainText_Html_Attachment_Image(Dictionarystring,string> tomails, Dictionarystring, string> ccmails, string mailFrom, string mailFromDisplay,
            string subject, string body, Dictionarystring, string> attachments, string notifyEmail = "", string plaintTextTips = "")
        {
            Mail_Message msg = new Mail_Message();
            msg.MimeVersion = "1.0";
            msg.MessageID = MIME_Utils.CreateMessageID();
            msg.Date = DateTime.Now;
            msg.Subject = subject;
            msg.From = new Mail_t_MailboxList();
            msg.From.Add(new Mail_t_Mailbox(mailFromDisplay, mailFrom));
            msg.To = new Mail_t_AddressList();
            foreach (string address in tomails.Keys)
            {
                string displayName = tomails[address];
                msg.To.Add(new Mail_t_Mailbox(displayName, address));
            }
            msg.Cc = new Mail_t_AddressList();
            foreach (string address in ccmails.Keys)
            {
                string displayName = ccmails[address];
                msg.Cc.Add(new Mail_t_Mailbox(displayName, address));
            }           

            //設置回執通知
            if (!string.IsNullOrEmpty(notifyEmail) ValidateUtil.IsEmail(notifyEmail))
            {
                msg.DispositionNotificationTo.Add(new Mail_t_Mailbox(notifyEmail, notifyEmail));
            }

            #region MyRegion

            //--- multipart/mixed -----------------------------------
            MIME_h_ContentType contentType_multipartMixed = new MIME_h_ContentType(MIME_MediaTypes.Multipart.mixed);
            contentType_multipartMixed.Param_Boundary = Guid.NewGuid().ToString().Replace('-', '.');
            MIME_b_MultipartMixed multipartMixed = new MIME_b_MultipartMixed(contentType_multipartMixed);
            msg.Body = multipartMixed;

            //--- multipart/alternative -----------------------------
            MIME_Entity entity_multipartAlternative = new MIME_Entity();
            MIME_h_ContentType contentType_multipartAlternative = new MIME_h_ContentType(MIME_MediaTypes.Multipart.alternative);
            contentType_multipartAlternative.Param_Boundary = Guid.NewGuid().ToString().Replace('-', '.');
            MIME_b_MultipartAlternative multipartAlternative = new MIME_b_MultipartAlternative(contentType_multipartAlternative);
            entity_multipartAlternative.Body = multipartAlternative;
            multipartMixed.BodyParts.Add(entity_multipartAlternative);

            //--- text/plain ----------------------------------------
            MIME_Entity entity_text_plain = new MIME_Entity();
            MIME_b_Text text_plain = new MIME_b_Text(MIME_MediaTypes.Text.plain);
            entity_text_plain.Body = text_plain;

            //普通文本郵件內容,如果對方的收件客戶端不支持HTML,這是必需的
            string plainTextBody = "如果你郵件客戶端不支持HTML格式,或者你切換到“普通文本”視圖,將看到此內容";
            if (!string.IsNullOrEmpty(plaintTextTips))
            {
                plainTextBody = plaintTextTips;
            }

            text_plain.SetText(MIME_TransferEncodings.QuotedPrintable, Encoding.UTF8, plainTextBody);
            multipartAlternative.BodyParts.Add(entity_text_plain);

            //--- text/html -----------------------------------------
            string htmlText = body;//"html>這是一份測試郵件,img src=\"cid:test.jpg\">來自font color=red>b>LumiSoft.Net/b>/font>/html>";
            MIME_Entity entity_text_html = new MIME_Entity();
            MIME_b_Text text_html = new MIME_b_Text(MIME_MediaTypes.Text.html);
            entity_text_html.Body = text_html;
            text_html.SetText(MIME_TransferEncodings.QuotedPrintable, Encoding.UTF8, htmlText);
            multipartAlternative.BodyParts.Add(entity_text_html);

            //--- application/octet-stream -------------------------
            WebClient client = new WebClient();
            foreach (string attach in attachments.Keys)
            {
                try
                {
                    byte[] bytes = client.DownloadData(attach);
                    using (MemoryStream stream = new MemoryStream(bytes))
                    {
                        multipartMixed.BodyParts.Add(Mail_Message.CreateAttachment(stream, attachments[attach]));
                    }
                }
                catch (Exception ex)
                {
                    LogTextHelper.Error(ex);
                }
            }

            #endregion

            return msg;
        }


而構造Mime格式的操作如下所示。
復制代碼 代碼如下:

private Mime Create_Html_Attachment_Image(string mailTo, string mailFrom, string mailFromDisplay,
            string subject, string body, Liststring> attachments, Dictionarystring, string> embedImages, string notifyEmail = "", string plaintTextTips = "",
            string replyEmail = "")
        {
            Mime m = new Mime();
            MimeEntity mainEntity = m.MainEntity;

            mainEntity.From = new AddressList();
            mainEntity.From.Add(new MailboxAddress(mailFromDisplay, mailFrom));
            mainEntity.To = new AddressList();
            mainEntity.To.Add(new MailboxAddress(mailTo, mailTo));
            mainEntity.Subject = subject;
            mainEntity.ContentType = MediaType_enum.Multipart_mixed;

            //設置回執通知
            if (!string.IsNullOrEmpty(notifyEmail) ValidateUtil.IsEmail(notifyEmail))
            {
                mainEntity.DSN = notifyEmail;
            }

            //設置統一回復地址
            if (!string.IsNullOrEmpty(replyEmail) ValidateUtil.IsEmail(replyEmail))
            {
                mainEntity.ReplyTo = new AddressList();
                mainEntity.ReplyTo.Add(new MailboxAddress(replyEmail, replyEmail));
            }

            MimeEntity textEntity = mainEntity.ChildEntities.Add();
            textEntity.ContentType = MediaType_enum.Text_html;
            textEntity.ContentTransferEncoding = ContentTransferEncoding_enum.QuotedPrintable;
            textEntity.DataText = body;

            //附件
            foreach (string attach in attachments)
            {
                MimeEntity attachmentEntity = mainEntity.ChildEntities.Add();
                attachmentEntity.ContentType = MediaType_enum.Application_octet_stream;
                attachmentEntity.ContentDisposition = ContentDisposition_enum.Attachment;
                attachmentEntity.ContentTransferEncoding = ContentTransferEncoding_enum.Base64;
                FileInfo file = new FileInfo(attach);
                attachmentEntity.ContentDisposition_FileName = file.Name;
                attachmentEntity.DataFromFile(attach);
            }

            //嵌入圖片
            foreach (string key in embedImages.Keys)
            {
                MimeEntity attachmentEntity = mainEntity.ChildEntities.Add();
                attachmentEntity.ContentType = MediaType_enum.Application_octet_stream;
                attachmentEntity.ContentDisposition = ContentDisposition_enum.Inline;
                attachmentEntity.ContentTransferEncoding = ContentTransferEncoding_enum.Base64;
                string imageFile = embedImages[key];
                FileInfo file = new FileInfo(imageFile);
                attachmentEntity.ContentDisposition_FileName = file.Name;

                //string displayName = Path.GetFileNameWithoutExtension(fileName);
                attachmentEntity.ContentID = key;//BytesTools.BytesToHex(Encoding.Default.GetBytes(fileName));

                attachmentEntity.DataFromFile(imageFile);
            }

            return m;
        }


綜合以上兩者的發送功能,都可以實現郵件的發送操作,如下界面是發送郵件界面。

3、LumiSoft.NET存儲eml郵件文件以及發送eml文件操作

除了上面的發送普通郵件,Lumisoft還支持吧郵件序列號存儲到文件(.eml郵件文件)里面,然后也可以通過把文件讀取到流里面,進行發送,對于某種場合,可以把郵件存儲到eml文件是一個很好的操作。

存儲EML文件的相關操作如下所示。

復制代碼 代碼如下:

private void btnCreateFile_Click(object sender, EventArgs e)
        {
            string attachFile = Path.Combine(Application.StartupPath, "Attachment/Hotel2.png");
            Liststring> attachments = new Liststring>();
            attachments.Add(attachFile);
            string subject = "測試郵件";
            string body = "html>這是一份測試郵件,來自font color=red>b>LumiSoft.Net/b>/font>/html>";
            string bodyEmbedy = "html>這是一份測試郵件img src=\"cid:test.jpg\">,來自font color=red>b>LumiSoft.Net/b>/font>/html>";
            Dictionarystring, string> embedList = new Dictionarystring, string>();
            embedList.Add("test.jpg", "C:\\test.jpg");

            //存儲為Eml文件
            string path = Path.Combine(Application.StartupPath, "Eml");
            DirectoryUtil.AssertDirExist(path);
            string emlFile = string.Format("{0}/{1}.eml", path, DateTime.Now.ToFileTime());

            Mime m = Create_Html_Attachment_Image(to, from, from, subject, bodyEmbedy, attachments, embedList);
            m.ToFile(emlFile);

            MessageUtil.ShowTips("OK");
        }


發送EML文件操作如下所示。
復制代碼 代碼如下:

private void btnSendFile_Click(object sender, EventArgs e)
        {
            using (SMTP_Client client = new SMTP_Client())
            {
                int smtpPort = smtpUseSsl ? WellKnownPorts.SMTP_SSL : WellKnownPorts.SMTP;

                client.Connect(smtpServer, smtpPort, smtpUseSsl);
                client.EhloHelo(smtpServer);
                //var authhh = new AUTH_SASL_Client_Plain(username, password);
                //client.Auth(authhh);
                client.Authenticate(username, password);
                //string text = client.GreetingText;
                client.MailFrom(from, -1);
                client.RcptTo(to);

                string path = Path.Combine(Application.StartupPath, "Eml");
                string emlFile = Directory.GetFiles(path)[0];
                var msg = Mail_Message.ParseFromFile(emlFile);

                MemoryStream stream = new MemoryStream();
                msg.ToStream(stream, new MIME_Encoding_EncodedWord(MIME_EncodedWordEncoding.Q, Encoding.UTF8), Encoding.UTF8);
                stream.Position = 0;
                client.SendMessage(stream);
                client.Disconnect();
            }
            MessageUtil.ShowTips("OK");
        }


您可能感興趣的文章:
  • MSScriptControl.ScriptControl組件屬性、方法、事件介紹
  • MSScriptControl.ScriptControl組件的用法實例
  • asp.net(c#)開發中的文件上傳組件uploadify的使用方法(帶進度條)
  • asp.net MVC實現無組件上傳圖片實例介紹
  • asp.net neatUpload 支持大文件上傳組件
  • asp.net中Word轉Html的辦法(不需要WORD組件)
  • asp.net(C#)防sql注入組件的實現代碼
  • asp.net 不用組件的URL重寫(適用于較大型項目)
  • asp.net中Fine Uploader文件上傳組件使用介紹
  • .NET程序集引用COM組件MSScriptControl遇到問題的解決方法

標簽:西寧 宣城 紅河 衢州 福州 西藏 岳陽 湖州

巨人網絡通訊聲明:本文標題《深入Lumisoft.NET組件與.NET API實現郵件發送功能的對比分析》,本文關鍵詞  深入,Lumisoft.NET,組件,與,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《深入Lumisoft.NET組件與.NET API實現郵件發送功能的對比分析》相關的同類信息!
  • 本頁收集關于深入Lumisoft.NET組件與.NET API實現郵件發送功能的對比分析的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    国产拍欧美日韩视频二区| 99久久99久久精品免费观看| 26uuu另类欧美| 国产一区999| 奇米四色…亚洲| 国产1区2区3区精品美女| 亚洲国产一二三| 国产精品美女久久久久高潮| 亚洲成人精品影院| 国产精品人成在线观看免费| 国产女人aaa级久久久级| 国产亚洲综合色| 久久久久久久久久电影| 国产.欧美.日韩| 久久精品国产在热久久| 午夜精品免费在线| 日韩制服丝袜av| 亚洲欧洲无码一区二区三区| 精品美女一区二区三区| 欧美一区二区黄色| 精品1区2区3区| 欧美午夜影院一区| 色天使色偷偷av一区二区| 成人sese在线| 欧美亚洲综合网| 欧美一区二区视频在线观看2020| 欧美色窝79yyyycom| 色婷婷综合在线| 欧美视频在线播放| 日韩欧美在线123| 国产精品欧美一区喷水| 一区二区三区在线播放| 日韩影院在线观看| av在线免费不卡| 在线成人av影院| 国产精品剧情在线亚洲| 天堂久久一区二区三区| 国产精华液一区二区三区| 91亚洲午夜精品久久久久久| 欧美一级日韩免费不卡| 亚洲综合免费观看高清在线观看| 色婷婷av一区二区三区之一色屋| 欧美一区二区视频在线观看2022| 国产农村妇女精品| 九色综合狠狠综合久久| 成人一二三区视频| 亚洲高清中文字幕| 岛国精品在线观看| 日韩视频在线你懂得| 国产精品人成在线观看免费| 秋霞国产午夜精品免费视频| av在线综合网| 国产日韩欧美一区二区三区乱码| 一区二区三区高清在线| 91在线精品一区二区三区| 久久久精品中文字幕麻豆发布| 亚洲国产精品久久艾草纯爱| 国产成人免费9x9x人网站视频| 在线91免费看| 日韩一区欧美二区| 欧美日韩视频在线一区二区| 日韩一区在线播放| 91丨九色丨蝌蚪富婆spa| 一区二区三区日韩欧美| 欧美体内she精高潮| 亚洲成人一区在线| 911精品产国品一二三产区| 亚洲一级二级在线| 色偷偷久久一区二区三区| 国产精品进线69影院| 色综合久久中文综合久久97| 久久久久久日产精品| 国产福利一区二区三区视频在线| 久久久不卡影院| 99精品一区二区三区| 在线中文字幕一区二区| 亚洲福利一二三区| 日韩欧美自拍偷拍| 国产成人在线观看免费网站| 久久综合国产精品| 一本色道久久加勒比精品| 午夜精品久久久久| 国产亚洲综合色| 欧美日韩一区不卡| 国产成人精品免费在线| 国产精品妹子av| 91精品国产免费| av一本久道久久综合久久鬼色| 亚洲一区在线观看网站| 久久久久国产精品麻豆ai换脸| 国产毛片精品国产一区二区三区| 亚洲大尺度视频在线观看| 国产精品全国免费观看高清 | 久久久噜噜噜久噜久久综合| 91国产丝袜在线播放| 成人晚上爱看视频| 紧缚捆绑精品一区二区| 日韩av电影免费观看高清完整版| 国产美女一区二区三区| 激情五月婷婷综合网| 蜜臀久久99精品久久久久宅男| 亚洲欧美日韩国产一区二区三区| 中文字幕巨乱亚洲| 精品国产一区二区三区忘忧草| 欧美日本在线看| 欧美情侣在线播放| 日韩三级在线免费观看| 精品噜噜噜噜久久久久久久久试看| 欧美日韩亚洲不卡| 日韩欧美国产系列| xf在线a精品一区二区视频网站| 久久久三级国产网站| 久久久久国色av免费看影院| 欧美高清在线精品一区| 亚洲少妇中出一区| 日韩国产在线观看| 国产一区二区在线看| 99精品在线免费| 日韩三级在线免费观看| 中文文精品字幕一区二区| 国产欧美日韩精品在线| **欧美大码日韩| 偷拍一区二区三区四区| 国产一区二区三区蝌蚪| 成人手机电影网| 欧美日韩在线播| 久久夜色精品国产欧美乱极品| 91精品国产91久久久久久最新毛片| 91精品国产综合久久香蕉的特点 | 中文一区一区三区高中清不卡| 国产精品亲子伦对白| 亚洲电影在线播放| 免费日本视频一区| 色哟哟在线观看一区二区三区| 欧美一区二区精美| 波多野结衣中文一区| 日韩一级完整毛片| 亚洲在线免费播放| 99v久久综合狠狠综合久久| 91精品福利在线一区二区三区| 亚洲精品免费播放| av电影天堂一区二区在线| 91.xcao| 日韩毛片精品高清免费| 国产精品一品二品| 欧美一区二区精美| 秋霞午夜鲁丝一区二区老狼| kk眼镜猥琐国模调教系列一区二区| 这里只有精品视频在线观看| 亚洲乱码中文字幕| 波多野洁衣一区| 国产精品欧美综合在线| 国产裸体歌舞团一区二区| 精品粉嫩aⅴ一区二区三区四区| 亚洲成人第一页| 在线成人av网站| 亚洲成av人**亚洲成av**| 91污在线观看| 亚洲国产综合色| 欧美性大战xxxxx久久久| 99久久伊人网影院| 亚洲人精品一区| 欧美三级电影网| 激情久久五月天| 中文字幕亚洲成人| 欧美三级一区二区| 美女视频网站黄色亚洲| 欧美国产日韩精品免费观看| 成人国产精品免费网站| 亚洲午夜私人影院| 久久久精品国产99久久精品芒果| 99国内精品久久| 舔着乳尖日韩一区| 17c精品麻豆一区二区免费| 欧美日韩在线直播| a在线欧美一区| 久久99精品一区二区三区三区| 亚洲视频一区在线| 亚洲亚洲人成综合网络| 久久久久高清精品| 欧美一区二区三区在线看| 色琪琪一区二区三区亚洲区| 美女视频免费一区| 亚洲精品欧美专区| 国产精品久久毛片av大全日韩| 日韩三级免费观看| 色嗨嗨av一区二区三区| 懂色av一区二区夜夜嗨| 激情国产一区二区 | 成人av手机在线观看| 日本少妇一区二区| 国产日韩在线不卡| 欧美精品一区二区在线播放| 欧洲一区在线观看| 国产成人久久精品77777最新版本| 日韩国产欧美在线视频| 亚洲精品高清在线| 成人欧美一区二区三区白人| 久久先锋资源网| 久久久久9999亚洲精品|