欧美三区四区_av先锋影音资源站_亚洲第一论坛sis_影音先锋2020色资源网_亚洲精品社区_在线免费观看av网站_国产一区二区伦理_亚洲欧美视频一区二区_99视频精品全部免费在线_精精国产xxxx视频在线

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

編輯Tag賺U幣

推薦:深入Lumisoft.NET實現郵件發送功能的方法詳解
本篇文章對使用Lumisoft.NET實現郵件發送功能的方法機型了詳細的分析介紹。需要的朋友參考下

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

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

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

復制代碼 代碼如下:m.ghpqjb.com

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進行管理,他們的利用代碼如下所示:
復制代碼 代碼如下:m.ghpqjb.com

//附件
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);


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

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發送郵件操作的完整代碼如下:
復制代碼 代碼如下:m.ghpqjb.com

/// <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對象即可。

復制代碼 代碼如下:m.ghpqjb.com

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操作如下所示。

復制代碼 代碼如下:m.ghpqjb.com

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格式的郵件操作如下所示。
復制代碼 代碼如下:m.ghpqjb.com

private Mail_Message Create_PlainText_Html_Attachment_Image(Dictionary<string,string> tomails, Dictionary<string, string> ccmails, string mailFrom, string mailFromDisplay,
string subject, string body, Dictionary<string, 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格式的操作如下所示。
復制代碼 代碼如下:m.ghpqjb.com

private Mime Create_Html_Attachment_Image(string mailTo, string mailFrom, string mailFromDisplay,
string subject, string body, List<string> attachments, Dictionary<string, 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文件的相關操作如下所示。

復制代碼 代碼如下:m.ghpqjb.com

private void btnCreateFile_Click(object sender, EventArgs e)
{
string attachFile = Path.Combine(Application.StartupPath, "Attachment/Hotel2.png");
List<string> attachments = new List<string>();
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>";
Dictionary<string, string> embedList = new Dictionary<string, 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文件操作如下所示。
復制代碼 代碼如下:m.ghpqjb.com

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");
}


分享:深入Lumisoft.NET組件開發碰到亂碼等問題的解決方法
本篇文章介紹了,在Lumisoft.NET組件開發中碰到亂碼等一些問題的解決方法。需要的朋友參考下

來源:模板無憂//所屬分類:.Net教程/更新時間:2013-05-08
相關.Net教程
日本午夜精品视频在线观看| 在线观看一二三区| 国产亚洲久久| 国产成人免费视频网站 | 亚洲最新在线| 免费在线观看黄色av| 日韩激情网站| 中文字幕亚洲精品在线观看| 欧美成人激情图片网| 欧洲精品在线播放| 国产性生活视频| 888久久久| 欧美日韩国产在线| 91久久久亚洲精品| 波多野结衣 在线| 久久的色偷偷| 久久精品视频免费观看| 久久夜精品va视频免费观看| 18岁网站在线观看| 国产精品毛片久久久久久久av| 中日韩男男gay无套| 制服丝袜亚洲网站| 久久九九视频| 青青操视频在线播放| 精品美女在线视频| 亚洲一区精品在线| 成人久久一区二区| 最近中文字幕免费视频| 911亚洲精品| 国产精品卡一卡二| 欧美在线亚洲一区| 成人在线观看一区二区| 少妇高潮一区二区三区99| 91一区在线观看| 美乳少妇欧美精品| 人人爽人人av| 92国产精品| 成人午夜在线播放| 久久精品一偷一偷国产| 久久午夜夜伦鲁鲁一区二区| 天天躁日日躁狠狠躁伊人| 国产精品18久久久久久久久| www高清在线视频日韩欧美| 激情综合网婷婷| 欧美 日韩 综合| 国产a精品视频| 久久亚洲电影天堂| 欧美一级xxxx| 欧美视频第一| 亚洲国产精品av| 国产精品高精视频免费| 一级性生活毛片| 亚洲va久久| 五月综合激情婷婷六月色窝| 国产富婆一区二区三区| 欧洲猛交xxxx乱大交3| 国产精品精品| 欧美日韩成人综合在线一区二区| 日韩中文不卡| 中文字幕观看在线| 免费观看成人av| 中文字幕精品www乱入免费视频| 国产偷人视频免费| 惠美惠精品网| 日本一区二区三区在线观看| 国产精品 欧美在线| 成人国产精品久久久网站| 欧美日韩精品一区二区三区在线观看| 亚洲福利视频一区| 黑人另类av| 69亚洲精品久久久蜜桃小说| 天堂成人免费av电影一区| 一本色道久久88综合亚洲精品ⅰ | 日韩成人一区二区三区| 亚洲精一区二区三区| 亚洲黄色av女优在线观看 | 老色鬼精品视频在线观看播放| 在线国产精品播放| 色噜噜狠狠一区二区三区狼国成人| 日本黄色成人| 亚洲精品国产a久久久久久| 校园春色另类视频| 亚洲自拍偷拍九九九| 国产女主播一区二区| 午夜毛片在线观看| 日韩精品亚洲一区| 日韩视频永久免费观看| 免费黄色av网址| 视频福利一区| 欧美日韩三级视频| 97在线免费视频观看| 污视频软件在线观看| 国产欧美日韩不卡免费| 亚洲最大福利视频网| 日本一级淫片色费放| 丝袜国产日韩另类美女| 日韩视频第一页| 欧美做受高潮中文字幕| 国产伦一区二区三区| 日韩一区二区三区电影在线观看 | 国产日韩欧美视频在线观看| www.在线成人| 国产剧情久久久久久| 免费网站看av| 免费av成人在线| 欧美激情网友自拍| 亚洲一二三精品| 亚洲国产高清一区| 原创国产精品91| 国产精品成人99一区无码| 国产免费播放一区二区| 欧美成人一区二区| 国产成人手机视频| 大奶在线精品| 欧美日韩一级黄| 男人操女人逼免费视频| 国产精品久久久久久久久久辛辛| 欧美视频免费在线| 成人在线免费高清视频| 亚洲成人va| 欧美午夜宅男影院在线观看| 最新黄色av网站| 日韩欧美2区| 精品国产乱码久久久久久婷婷 | 综合国产视频| 日韩精品一区二区三区四区视频| 国产区二区三区| 性欧美lx╳lx╳| 日韩欧美一区中文| 久久这里只精品| 国产一区二区区别| 亚洲精品国产精品国自产在线 | 国精一区二区| 日韩成人av一区| 永久免费看片在线观看| 一级片久久久久| 最近日韩免费视频| 国产河南妇女毛片精品久久久| 国产精品美女午夜av| 免费在线不卡视频| av电影在线观看一区| 99re在线国产| a网站在线观看| 亚洲欧洲日产国产综合网| 日韩av不卡播放| 国精产品一区二区三区有限公司| 亚洲午夜成aⅴ人片| 国产在线无码精品| 日韩在线精品强乱中文字幕| 欧美日韩卡一卡二| 香港日本韩国三级网站| 成人直播大秀| 日韩一区av在线| 亚洲AV成人无码网站天堂久久| 日本欧美久久久久免费播放网| 欧美中文字幕在线| 亚洲天堂男人av| 久久久国产精品午夜一区ai换脸| 快播亚洲色图| 色豆豆成人网| 欧美性大战久久| 日本久久久久久久久久久久| 欧美精选视频在线观看| 国产亚洲精品高潮| 欧美aaa级片| 国内成+人亚洲+欧美+综合在线| 成人网址在线观看| 精品久久久无码中文字幕| 亚洲美女屁股眼交| 国产aaa免费视频| 老司机aⅴ在线精品导航| 日韩禁在线播放| 中文字幕免费看| 日本成人超碰在线观看| 国产专区欧美专区| www.日韩在线观看| 精品人伦一区二区三区蜜桃免费| 人妻有码中文字幕| 欧美aaaaaaaaaaaa| 欧美国产视频一区二区| www.国产高清| 国产精品视频免费看| 影音先锋男人的网站| 国内精品国产成人国产三级粉色| 日韩二区三区在线| 亚洲综合欧美综合| 国产成都精品91一区二区三| 国产一区二区免费电影| 秋霞国产精品| 日韩三级免费观看| 一本加勒比北条麻妃| 九九视频精品免费| 国产精品初高中精品久久| 亚洲精品mv| 久久久蜜桃一区二区人| 国产97色在线|日韩| 91超薄丝袜肉丝一区二区| 亚洲国产日韩a在线播放| 久久网站免费视频| 中文字幕av亚洲精品一部二部| 国语自产偷拍精品视频偷 | 久久久久久有精品国产| 99久久久久久久久| 樱花草国产18久久久久| 青青视频在线播放| 亚洲区综合中文字幕日日| 91成人性视频| 国产成人久久精品77777综合 | 国产精品国产一区| 91精品国产色综合| 国产精选久久久| 色婷婷久久久亚洲一区二区三区| 亚洲女人在线观看| 日本成人在线电影网| 国产一区二区三区免费不卡| 日韩av黄色| 亚洲区一区二区| 久草福利资源在线观看| 国产精品欧美精品| 无码无遮挡又大又爽又黄的视频| 黄色欧美日韩| 国产日韩欧美91| 韩国精品主播一区二区在线观看 | 黄色a级片免费看| 欧美在线观看视频一区| 4388成人网| 国产91免费在线观看| 91麻豆精品国产自产在线观看一区 | 牛夜精品久久久久久久99黑人| 人人做人人澡人人爽欧美| 国产91免费在线观看| 日韩免费一区二区三区在线播放| 长河落日免费高清观看| 国产亚洲成av人在线观看导航| 僵尸世界大战2 在线播放| 一本二本三本亚洲码| 亚洲欧美韩国| 精品少妇一区二区三区视频免付费| 91视频免费在观看| 国产婷婷色一区二区三区四区 | 日本电影亚洲天堂| 十八禁一区二区三区| 日韩一区二区电影在线| 免费成年人视频在线观看| 中文字幕在线不卡国产视频| www.涩涩涩| 麻豆精品久久精品色综合| 婷婷亚洲婷婷综合色香五月| 精品久久一区| 国产精品久久久久不卡| 亚洲精品一区三区三区在线观看| 亚洲欧洲一区二区三区久久| 中文字幕激情小说| 欧美性猛交xxxx免费看漫画| 老熟妇精品一区二区三区| 97精品电影院| 国产亚洲精品网站| 日本欧美一区二区三区| 亚洲欧美日韩另类精品一区二区三区| 奇米亚洲欧美| 国产精品白嫩美女在线观看| 成人免费毛片嘿嘿连载视频…| 亚洲最大在线视频| 国产免费www| 欧美日韩国产不卡| 欧美色图亚洲视频| 亚洲国产精品久久艾草纯爱| 在线播放第一页| 91在线码无精品| 国产男女激情视频| 蜜芽一区二区三区| 亚洲啊啊啊啊啊| 亚洲国内自拍| 日韩精品久久久毛片一区二区| 久久福利综合| 7777精品伊久久久大香线蕉语言| 99久久香蕉| 欧美怡春院一区二区三区| 日韩一区二区三区在线免费观看| 色狠狠av一区二区三区香蕉蜜桃| 国产精品伦理一区| 亚洲国产欧美一区二区三区久久| 啦啦啦免费高清视频在线观看| 一本一本大道香蕉久在线精品| 人与嘼交av免费| 一区二区三区日韩欧美| 香港三日本8a三级少妇三级99| 久久精品日产第一区二区三区高清版 | 国产av一区二区三区传媒| 久久综合久久综合亚洲| 污色网站在线观看| 成人国产精品免费观看视频| 色婷婷综合久久久久中文字幕| 久久99精品视频| 国产精品网站免费| 久久99精品久久只有精品| 国产xxxx振车| 老司机精品视频一区二区三区| 999久久欧美人妻一区二区| 久久久久久黄| 特色特色大片在线| 丝袜美腿高跟呻吟高潮一区| xxxxxx在线观看| 日韩国产高清在线| 国产玉足脚交久久欧美| 免费成人在线观看| 黄色www网站| 狠狠色丁香婷婷综合| 亚洲 高清 成人 动漫| 国产精品一二三四五| www.日日操| av激情亚洲男人天堂| 一卡二卡三卡四卡五卡| 国产亚洲欧美在线| 野战少妇38p| 亚洲品质自拍视频| 精品一区二区三区蜜桃在线| 亚洲福利一二三区| 成年人一级黄色片| 欧美性视频一区二区三区| 午夜精品三级久久久有码| 欧美一区二区视频在线观看2020 | 成人avav影音| 三级性生活视频| 国产拍揄自揄精品视频麻豆| 给我看免费高清在线观看| 夜夜操天天操亚洲| 久久国产波多野结衣| 在线亚洲一区观看| 日韩免费av片| 精品国产在天天线2019| 国产日韩欧美中文字幕| 三级精品视频久久久久| 日本精品另类| 91精品国产777在线观看| 亚洲午夜无码av毛片久久| 日韩av在线天堂| 麻豆一二三区精品蜜桃| 99久久99久久免费精品蜜臀| 喜爱夜蒲2在线| 久久国产欧美日韩精品| 99久久国产宗和精品1上映| 91麻豆国产在线观看| 91传媒理伦片在线观看| 亚洲国产一二三| 欧日韩不卡视频| 亚洲午夜极品| 日本精品视频一区| 日韩高清不卡一区二区| 日韩毛片在线免费看| 国产欧美一区二区在线| 性欧美13一14内谢| 色哟哟国产精品免费观看| 区一区二在线观看| 伊人久久免费视频| 亚洲国产伊人| 92国产精品视频| 欧美在线视屏| 久久99中文字幕| 91浏览器在线视频| brazzers精品成人一区| 色噜噜久久综合| 伊人久久一区二区| 久久久黄色av| 99这里只有精品视频| 九九九九久久久久| 视频一区二区三区入口| 色婷婷成人在线| 亚洲一区二区偷拍精品| 亚洲欧美在线视频免费| 国产一区二区三区毛片| 少妇高潮一区二区三区99| eeuss一区二区三区| av不卡在线| youjizzxxxx18| 亚洲精品视频在线观看免费| 国产在线视频卡一卡二| 精品中文字幕久久久久久| 国产成人久久精品麻豆二区| 91精品综合视频| 亚洲高清资源| 爆乳熟妇一区二区三区霸乳| 亚洲天堂中文字幕| 国产精品成人国产乱| 国产亚洲精品久久久久久牛牛| 国产欧美日韩电影| 精品国产免费久久久久久尖叫 | 久久久神马电影| 免费观看成人av| 中文字幕一区二区三区乱码不卡| 岛国av一区二区三区| 亚洲天堂自拍偷拍| 91黄色8090| 国产精品99一区二区三区| 欧美又粗又长又爽做受| 国产日韩欧美麻豆| 欧美成人免费观看视频| 亚洲欧美精品一区二区| 日韩一区二区三区高清在线观看| 国内视频一区|