青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

悲情土仔一生

  C++博客 :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
  14 隨筆 :: 0 文章 :: 74 評論 :: 0 Trackbacks

利用Indy 10的IdSMTP控件制作可帶附件的郵件發(fā)送器

作者:Tuuzed(土仔)   發(fā)表于:2008年7月29日
版權(quán)聲明:可以任意轉(zhuǎn)載,轉(zhuǎn)載時請務(wù)必以超鏈接形式標(biāo)明文章原始出處和作者信息及本聲明
http://m.shnenglu.com/tuuzed/archive/2008/07/29/57477.html



Indy10中的IdSMTP控件比BCB6中自帶的NMSMTP支持更多的SMTP命令(支持RFC 821,RFC 1869 ,RFC 2197 ,RFC 2554),像國內(nèi)的網(wǎng)易、TOM、21CN等的SMTP都需要EHLO命令先進(jìn)行認(rèn)證才可使用。但是,目前很多大型的郵件服務(wù)商出于預(yù)防垃圾郵件的考慮,已經(jīng)開始取消或限制SMTP發(fā)信了,改為提供WebMail服務(wù),因此可用的SMTP服務(wù)器是少之又少了。有人說現(xiàn)在做SMTP郵件發(fā)送器意義已經(jīng)不大,可我認(rèn)為,動手去做這個SMTP發(fā)送器可以更好的了解一封電子郵件的結(jié)構(gòu)和它的產(chǎn)生過程,管他別人愛說啥!

【郵件大致結(jié)構(gòu)】

先用DreamMail發(fā)一封測試信:由TestID@163.com發(fā)信給TestID2@21cn.com,其中掛載附件1.txt。信件從21CN收回來之后是這樣子的:

 1//服務(wù)器自動添加的東西
 2HMM_SOURCE_IP:10.27.2.7:55493.2027099718
 3HMM_ATTACHE_NUM:0001
 4HMM_SOURCE_TYPE:SMTP
 5Received: from aisp7-mta?dg (dgproxy7.inner-hermes.com [10.27.2.7])
 6    by 21cn.com (HERMES) with SMTP id 359B63813A
 7    for <TestID2@21cn.com>; Tue, 29 Jul 2008 22:20:12 +0800 (CST)
 8
 9Received: from m12-11.163.com([220.181.12.11])
10    by aisp7-mta@dg(Knowledge-based Antispam Gateway 2.126n5(2008-07-01),59.36.102.56) with ESMTP id 
11
12mx23749.1217341212 for <TestID2@21cn.com>;
13    Tue, 11 Jul 2008 22:20:13 +0000
14
15X-Original-MailFrom: TestID@163.com
16Received: from ChinaPC (unknown [58.145.147.196])
17    by smtp7 (Coremail) with SMTP id C8CowLCrpS8XJ49IDQBdEQ==.5964S2;
18    Tue, 11 Jul 2008 22:20:07 +0800 (CST)

 1//大都是我們自己填寫的東西
 2//回復(fù)地址
 3Reply-To: TestID@163.com
 4
 5From: "TestID" <TestID@163.com>
 6To: "TestID2" <TestID2@21cn.com>
 7Subject: Test Attachment
 8Date: Tue, 29 Jul 2008 22:31:07 +0800
 9//Dreammail的識別ID
10Message-Id: <DreamMail__223107_76081071266@smtp.163.com>
11MIME-Version: 1.0
12//內(nèi)容類型及內(nèi)容“指針I(yè)D”
13Content-Type: multipart/mixed; 
14    boundary="----=_NextPart_08072922310693970267282_000"
15//郵件優(yōu)先級
16X-Priority: 3
17//客戶端名稱
18X-Mailer: DreamMail 4.4.1.0
19X-Coremail-Antispam: 1Uf129KBjDUn29KB7ZKAUJUUUUUYxn0WfASr-VFAUDa7-sFnT
20    9fnUUIcSsGvfJTRUUUj_xYjsxI4VWUJwAYFVCjjxCrM7AC8VAFwI0_Jr0_Gr1l1I0E4x80
21    FVCIwcAKzIAtM7C26IkvcIIF6IxKo4kEV4yl1IIY67AEw4v_Jr0_Jr4le4C267I2x7xF54
22    xIwI1l52xGzVA2a4k0FcxF6cIjj282cryl52xGzVA2a4k0FcxF6xCjrcI26cIUMc02F40E
23    57IF67AEF4xIwI1lYx0E2Ix0cI8IcVAFwI0_Jrv_JF1lYx0Ex4A2jsIE14v26r1j6r4UM4
24    xvF2IEb7IF0Fy264kE64k0F24lFcxC0VAYjxAxZF0Ex2IqxwAC62BYpTIE1TZKA3svLVAK
25    vSnIqfZI6r4lFVCF04k20xvEw2I207IF0wAKzVCY07xG64k0F24l7I0Y6sxI4wCY1Ik26c
26    xK620vw7xCY7Wlc7Ca8VAvwVCjb41lc7Ca8VAvwVCFzxkY4VA2I41lc2xSY4AK67AK6ry5
27    MxkI7II2jI8vz4v_Jr0_Jryl4x8a6c8ajcxJMI8E67AF67kF1VAFwI0_Jr0_JrylIxAIcV
28    C0I7IYx2IY67AKxVWUJVWUCwCI42IY6xIIjxv20xvEc7CjxVAFwI0_Jr0_Gr1lIxAIcVC2
29    z280aVAFwI0_Jr0_Gr1lIxAIcVC2z280aVCY1x0267AKxVWUJVW8JbIYCTnIWIevJa73Uj
30    IFyTuYvjxUgg4SUUUUU
31//ESet病毒防火墻添加
32X-EsetId: 2080B02B6D6871693F86B07B643E31

 1//內(nèi)容開始了,對應(yīng)上面說的“指針I(yè)D”
 2------=_NextPart_08072922310693970267282_000
 3Content-Type: multipart/alternative;
 4    boundary="----=_NextPart_08072922310693970267282_002"
 5
 6//無控制符、無標(biāo)簽的文本內(nèi)容(BASE64編碼)
 7------=_NextPart_08072922310693970267282_002
 8Content-Type: text/plain; 
 9    charset="GB2312"
10Content-Transfer-Encoding: base64
11
12SGVsbG8gV29ybGQhDQo=
13
14//有控制符、標(biāo)簽的HTML內(nèi)容(BASE64編碼)
15------=_NextPart_08072922310693970267282_002
16Content-Type: text/html; 
17    charset="GB2312"
18Content-Transfer-Encoding: base64
19
20PEhUTUw+PEhFQUQ+PFRJVExFPk1haWw8L1RJVExFPg0KPE1FVEEgY29udGVudD0iS3NESFRNTEVE
21TGliLm9jeCwgRnJlZVdhcmUgSFRNTCBFZGl0b3IgMS4xNjQuMiwgP0t1cnQgU2VuZmVyIiANCm5h
22bWU9R0VORVJBVE9SPg0KPE1FVEEgaHR0cC1lcXVpdj1Db250ZW50LVR5cGUgY29udGVudD0idGV4
23dC9odG1sOyBjaGFyc2V0PUdCMjMxMiI+PC9IRUFEPg0KPEJPRFkgc3R5bGU9IkZPTlQtU0laRTog
24OXB0OyBGT05ULUZBTUlMWTogy87M5SIgbGVmdE1hcmdpbj01IHRvcE1hcmdpbj01ICNmZmZmZmY+
25DQo8RElWPkhlbGxvIFdvcmxkITwhLS1BSURfU0VORFRPX0JFR0lOLS0+PC9ESVY+PCEtLURyZWFt
26TWFpbF9BRF9CRUdJTi0tPjxESVY+PEZPTlQgZmFjZT0iQXJpYWwsc2Fucy1zZXJpZiIgc2l6ZT0y
27Pl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
28X19fX19fX19fX19fPEJSPjxFTT48U3Ryb25nPkRyZWFtTWFpbDwvU3Ryb25nPjwvRU0+Jm5ic3A7
29PEZPTlQgZmFjZT0iQXJpYWwsc2Fucy1zZXJpZiIgc2l6ZT0yPi0gtdrSu7j21qez1tPKvP7AtNS0
30uPrX2bXEtefX09PKvP6/zbuntssmbmJzcDs8L0ZPTlQ+PEZPTlQgZmFjZT0iQXJpYWwsc2Fucy1z
31ZXJpZiIgY29sb3I9IzAwMDBmZiBzaXplPTI+PEEgaHJlZj0iaHR0cDovL3d3dy5kcmVhbW1haWwu
32b3JnIj53d3cuZHJlYW1tYWlsLm9yZzwvQT48L0ZPTlQ+PC9GT05UPjwvRElWPjwhLS1EcmVhbU1h
33aWxfQURfRU5ELS0+PC9CT0RZPjwvSFRNTD4NCg==
34
35------=_NextPart_08072922310693970267282_002--
36//附件的內(nèi)容
37------=_NextPart_08072922310693970267282_000
38Content-Type: text/plain; 
39    name="1.txt"
40Content-Transfer-Encoding: base64
41Content-Disposition: attachment;
42    filename="1.txt"
43
44MTIz
45
46------=_NextPart_08072922310693970267282_000--


看完之后應(yīng)該對郵件結(jié)構(gòu)有個大致的印象了,其實(shí)不難,牛人通常都是把各種值自己填充完,然后用winsocket發(fā)出去的。只是都喜歡偷懶,Indy已經(jīng)幫忙包裝好了,只管用就OK。

【準(zhǔn)備工作】

準(zhǔn)備啥呢?已經(jīng)安裝好最新版Indy10的BCB6、一個可以使用SMTP端口的郵件帳號和一條可以上網(wǎng)的線路。

【了解所需的控件】

TIdSMTP中的屬性名稱都很清楚(服務(wù)器地址、端口、認(rèn)證類型、登錄超時等),無需再多說。發(fā)信最關(guān)鍵是要用到控件的兩個方法:Connect和Send。Connect(AnsiString ServerAddress, AnsiString ServerPort)方法實(shí)現(xiàn)的是登錄SMTP服務(wù)器和用戶名認(rèn)證;Send(TIdMessage *AMsg)方法實(shí)現(xiàn)的是認(rèn)證后的發(fā)信過程,AMsg指的是信件的內(nèi)容,也就是與上面所看到類似的信件源碼,它是Indy10中的TIdMessage類指針。

TIdMessage屬性大致歸兩類,一是郵件頭:就是寄信人、收信人、抄送、密送、主題、信件內(nèi)容編碼、附件編碼等;二是郵件內(nèi)容:包括無控制符無標(biāo)簽的純文本內(nèi)容(Plain)、帶控制符帶標(biāo)簽的網(wǎng)頁內(nèi)容(Html)、編碼后的附件(Attachment)。Indy10中,Plain和Html用TIdText類實(shí)現(xiàn),Attachment用TIdAttachmentFile實(shí)現(xiàn)。只要將兩個類實(shí)例化并掛載在TIdMessage下,就組成一個完整的郵件內(nèi)容了。

【開始動手】

一個很簡陋的界面:



堆上比較容易理解的代碼:

  1//main.cpp
  2//---------------------------------------------------------------------------
  3
  4#include <vcl.h>
  5#pragma hdrstop
  6
  7#include "Main.h"
  8//---------------------------------------------------------------------------
  9#pragma package(smart_init)
 10#pragma link "IdExplicitTLSClientServerBase"
 11#pragma link "IdSMTPBase"
 12#pragma resource "*.dfm"
 13TForm1 *Form1;
 14//---------------------------------------------------------------------------
 15__fastcall TForm1::TForm1(TComponent* Owner)
 16    : TForm(Owner)
 17{
 18}

 19//---------------------------------------------------------------------------
 20void __fastcall TForm1::btnSendClick(TObject *Sender)
 21{
 22    //Mail
 23    TIdText *idBody, *idHtml;
 24    TIdAttachmentFile *idAtta;
 25    try
 26    {
 27
 28        idMsg=new TIdMessage(Application);
 29        //Msg base header
 30        idMsg->From->Name=edtName->Text.Trim();
 31        idMsg->From->Address=edtMailaddr->Text.Trim();
 32        idMsg->ReplyTo->EMailAddresses="no_reply@163.com";
 33        idMsg->ContentType="multipart/alternative";
 34        idMsg->ContentTransferEncoding="base64";
 35        idMsg->AttachmentEncoding="MIME";
 36        idMsg->Encoding=meDefault;
 37        idMsg->CharSet="gb2312";
 38        idMsg->Subject=edtSubject->Text.Trim();
 39        idMsg->Recipients->EMailAddresses=edtTo->Text.Trim();
 40        idMsg->Priority=mpNormal;
 41
 42        //msg body plain
 43        idBody=new TIdText(idMsg->MessageParts, idMsg->Body);
 44        idBody->CharSet="utf-8";
 45        idBody->ContentType="text/plain";
 46        idBody->ContentTransfer="base64";
 47        idBody->Body->Add(mmoContent->Text);
 48
 49        //msg body html
 50        idHtml=new TIdText(idMsg->MessageParts, idMsg->Body);
 51        idHtml->CharSet="utf-8";
 52        idHtml->ContentType="text/html";
 53        idHtml->ContentTransfer="base64";
 54        idHtml->Body->Add("<HTML><HEAD><TITLE>Mail</TITLE></HEAD>");
 55        idHtml->Body->Add("<BODY>");
 56        idHtml->Body->Add(mmoContent->Text);
 57        idHtml->Body->Add("</BODY></HTML>");
 58
 59        //msg body attachment
 60        if (edtAttach->Text.Trim()!="")
 61        {
 62            if (FileExists(edtAttach->Text.Trim()))
 63            {
 64                idAtta=new TIdAttachmentFile(idMsg->MessageParts, edtAttach->Text.Trim());
 65
 66                idAtta->ContentType="application/octet-stream";
 67                idAtta->ContentDisposition="attachment";
 68                idAtta->ContentTransfer="base64";
 69                idAtta->FileName=ExtractFileName(edtAttach->Text.Trim());
 70            }

 71            else
 72            {
 73                edtAttach->Text="";
 74            }

 75        }

 76    }

 77    catch(Exception &exception)
 78    {
 79        //show Error!
 80        idMsg->Clear();
 81        delete idMsg;
 82        return;
 83    }

 84
 85    //SMTP Server
 86    try
 87    {
 88        idSmtp->Username=edtUsername->Text;
 89        idSmtp->Password=edtPasswd->Text;
 90        idSmtp->HeloName="SMTP";
 91        idSmtp->MailAgent="DreamMail";
 92        idSmtp->UseEhlo=true;
 93        idSmtp->ReadTimeout=5000;
 94        idSmtp->Connect(edtServer->Text, StrToInt(edtPort->Text));
 95        idSmtp->Send(idMsg);
 96    }

 97    catch()
 98    {
 99        //Show error!
100        idSmtp->Disconnect();
101        delete idMsg;
102        return;
103    }

104    idSmtp->Disconnect();
105    delete idMsg;
106    ShowMessage("Mail Sent!");
107}

108//---------------------------------------------------------------------------
109void __fastcall TForm1::idSmtpConnected(TObject *Sender)
110{
111    btnSend->Enabled=false;    
112}

113//---------------------------------------------------------------------------
114void __fastcall TForm1::idSmtpDisconnected(TObject *Sender)
115{
116    btnSend->Enabled=true;
117}

118//---------------------------------------------------------------------------
119void __fastcall TForm1::btnOpenfileClick(TObject *Sender)
120{
121    try
122    {
123        TOpenDialog *opdGetfile=new TOpenDialog(Application);
124        opdGetfile->Options.Clear();
125        opdGetfile->Title = "Select attachment";
126        opdGetfile->Options << ofFileMustExist;
127        opdGetfile->InitialDir=ExtractFilePath(Application->ExeName);
128        opdGetfile->Filter = "All files (*.*)|*.*";
129        opdGetfile->FilterIndex = 2;
130        if(opdGetfile->Execute())
131        {
132            if (FileExists(opdGetfile->FileName))
133                edtAttach->Text=opdGetfile->FileName;
134
135        }

136    }

137    catch()
138    {
139        return;
140    }

141
142
143}

144//---------------------------------------------------------------------------
145

 1//main.h
 2//---------------------------------------------------------------------------
 3
 4#ifndef MainH
 5#define MainH
 6//---------------------------------------------------------------------------
 7#include <Classes.hpp>
 8#include <Controls.hpp>
 9#include <StdCtrls.hpp>
10#include <Forms.hpp>
11#include "IdExplicitTLSClientServerBase.hpp"
12#include "IdSMTPBase.hpp"
13#include <IdBaseComponent.hpp>
14#include <IdComponent.hpp>
15#include <IdMessageClient.hpp>
16#include <IdSMTP.hpp>
17#include <IdTCPClient.hpp>
18#include <IdTCPConnection.hpp>
19#include <IdText.hpp> //TIdText needed
20#include <IdAttachmentFile.hpp> //TIdAttachment needed
21//#include <IdMessageCoderMIME.hpp>
22#include <IdCoderHeader.hpp>
23
24//---------------------------------------------------------------------------
25class TForm1 : public TForm
26{
27__published:    // IDE-managed Components
28    TGroupBox *grpServer;
29    TEdit *edtServer;
30    TEdit *edtPort;
31    TEdit *edtUsername;
32    TEdit *edtPasswd;
33    TIdSMTP *idSmtp;
34    TGroupBox *grpMail;
35    TEdit *edtName;
36    TEdit *edtMailaddr;
37    TEdit *edtTo;
38    TEdit *edtSubject;
39    TMemo *mmoContent;
40    TButton *btnSend;
41    TEdit *edtAttach;
42    TButton *btnOpenfile;
43    TLabel *lbl1;
44    TLabel *lbl2;
45    TLabel *lbl3;
46    TLabel *lbl4;
47    TLabel *lbl5;
48    TLabel *lbl6;
49    TLabel *lbl7;
50    TLabel *lbl8;
51    TLabel *lbl9;
52    void __fastcall btnSendClick(TObject *Sender);
53    void __fastcall idSmtpConnected(TObject *Sender);
54    void __fastcall idSmtpDisconnected(TObject *Sender);
55    void __fastcall btnOpenfileClick(TObject *Sender);
56private:    // User declarations
57    TIdMessage *idMsg;
58    //TIdMessageEncoderMIME *idMsg;
59public:        // User declarations
60    __fastcall TForm1(TComponent* Owner);
61}
;
62//---------------------------------------------------------------------------
63extern PACKAGE TForm1 *Form1;
64//---------------------------------------------------------------------------
65#endif
66


完成后編譯試試!

posted on 2008-07-29 23:48 土仔 閱讀(9150) 評論(10)  編輯 收藏 引用 所屬分類: 土仔編程

評論

# re: 利用Indy 10的IdSMTP控件制作可帶附件的郵件發(fā)送器 2008-07-30 09:52 信任
先支持一下哦  回復(fù)  更多評論
  

# re: 利用Indy 10的IdSMTP控件制作可帶附件的郵件發(fā)送器 2008-07-31 17:11 wangwei.njcn@gmail.com
問一下,你這樣的代碼發(fā)送的郵件,使用outlook接受時,是否有亂碼的問題;  回復(fù)  更多評論
  

# re: 利用Indy 10的IdSMTP控件制作可帶附件的郵件發(fā)送器 2008-07-31 21:28 土仔
@wangwei.njcn@gmail.com
這只是一個小程序。Outlook沒有實(shí)驗(yàn)國,我用DreamMail中文沒有問題。只要你填寫對CharSet屬性就好了。還有,這程序還沒有考慮標(biāo)題編碼問題,標(biāo)題編碼后應(yīng)該類似=B?GB2312 =?=這樣的格式的,你可以看看中文標(biāo)題信件的源代碼。  回復(fù)  更多評論
  

# re: 利用Indy 10的IdSMTP控件制作可帶附件的郵件發(fā)送器 2008-08-01 11:24 wangwei.njcn@gmail.com
是這樣的,CharSet屬性,body的內(nèi)容就沒有問題了,但subject卻是亂碼;但如果我手工對subject進(jìn)行base64的編碼,并加上=B?GB2312 =?=的格式,發(fā)給foxmail就正常了,但發(fā)給outlook還是有問題。  回復(fù)  更多評論
  

# re: 利用Indy 10的IdSMTP控件制作可帶附件的郵件發(fā)送器 2008-08-01 12:06 土仔
@wangwei.njcn@gmail.com
應(yīng)該我代碼的疏忽,你看看CharSet都全改了嗎?一個是idMsg->CharSet,idBody->CharSet,idHtml->CharSet,我代碼里面,第一個是GB2312,第二個是UTF-8,可能是這里的問題吧。你試試都改成GB2312看看。對了OUTLOOK里面也有編碼設(shè)置的,當(dāng)你收臺灣或香港地區(qū)的時候,你要手動改為BIG5。  回復(fù)  更多評論
  

# re: 利用Indy 10的IdSMTP控件制作可帶附件的郵件發(fā)送器[未登錄] 2008-08-27 14:16 燕子
樓主有QQ嗎?我用了你的方法郵件發(fā)送是成功了,但怎么就收不到發(fā)出的郵件呢?試了好多個郵箱了.我的QQ:243106206  回復(fù)  更多評論
  

# re: 利用Indy 10的IdSMTP控件制作可帶附件的郵件發(fā)送器 2008-08-27 23:41 土仔
@燕子
應(yīng)該不會出現(xiàn)這樣的問題的?;蛟S你再等等,有時有延時。但我一般都能成功啊。
  回復(fù)  更多評論
  

# re: 利用Indy 10的IdSMTP控件制作可帶附件的郵件發(fā)送器 2009-04-23 17:04 魯魯
不知道樓主會不會再出indy10 + chat server/client的制作教學(xué)
好期特呀!  回復(fù)  更多評論
  

# re: 利用Indy 10的IdSMTP控件制作可帶附件的郵件發(fā)送器 2009-09-09 09:51 kevinlhit
請問一下有什辬法可以不用附檔方式
像outlook一樣直接匯入圖檔或html檔?
我看裡面的也是base64,但就不知道
怎麼做,感謝  回復(fù)  更多評論
  

# re: 利用Indy 10的IdSMTP控件制作可帶附件的郵件發(fā)送器 2010-10-14 16:45 linkyang

謝謝,我的亂碼終于解決掉了!  回復(fù)  更多評論
  

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            久久久久久久久蜜桃| 欧美日韩福利视频| 久久亚洲风情| 欧美一区二区三区四区高清| 一区二区高清视频| 在线午夜精品| 亚洲尤物在线| 亚洲欧美日韩天堂| 欧美在线视频网站| 麻豆国产精品va在线观看不卡| 久久综合色影院| 久久久99精品免费观看不卡| 免费在线播放第一区高清av| 欧美激情在线狂野欧美精品| 亚洲国产精彩中文乱码av在线播放| 久久精品国产2020观看福利| 久久综合色播五月| 亚洲日韩欧美视频| 一区二区三区四区五区精品视频| 亚洲在线中文字幕| 狂野欧美激情性xxxx| 欧美三级在线视频| 狠狠入ady亚洲精品| 日韩视频永久免费观看| 亚洲欧美日韩另类| 欧美黄在线观看| 亚洲一级影院| 猫咪成人在线观看| 国产精品家教| 黄色精品在线看| 在线亚洲+欧美+日本专区| 久久久久久网| 在线视频欧美日韩| 欧美成人伊人久久综合网| 国产精品视频九色porn| 亚洲国产精品久久久久秋霞蜜臀 | 亚洲理伦电影| 欧美一区1区三区3区公司| 欧美成年人视频网站| 一本大道久久a久久精二百| 久久精品水蜜桃av综合天堂| 欧美日韩在线精品| 亚洲第一色在线| 久久精品亚洲一区| 亚洲性夜色噜噜噜7777| 欧美bbbxxxxx| 国际精品欧美精品| 欧美一区二区日韩| 一个色综合导航| 欧美激情一区在线| 亚洲美洲欧洲综合国产一区| 快播亚洲色图| 亚洲欧美日韩国产精品| 欧美日韩mv| 亚洲精品国精品久久99热| 久久久99久久精品女同性| 亚洲一区二区在线免费观看视频| 麻豆久久婷婷| 亚洲风情亚aⅴ在线发布| 久久在线精品| 久久久久一本一区二区青青蜜月| 国产精品一区一区| 亚洲淫性视频| 亚洲一级高清| 国产精品色一区二区三区| 亚洲精品影视| 亚洲欧洲三级| 欧美日韩精品在线| 一区二区福利| 一区二区三区欧美视频| 欧美日韩伦理在线| 99精品国产福利在线观看免费| 欧美激情一区二区三级高清视频| 欧美影院午夜播放| 一区二区三区在线高清| 欧美国产日韩一区二区在线观看 | 一区二区三区三区在线| 欧美日韩视频第一区| 亚洲自拍偷拍网址| 亚洲欧美日韩中文在线制服| 国产亚洲精品久久久| 噜噜噜91成人网| 久久一区二区三区超碰国产精品| 狠狠色狠狠色综合日日91app| 女生裸体视频一区二区三区| 欧美激情一区二区三区蜜桃视频| 亚洲尤物视频网| 欧美在线3区| 激情综合电影网| 亚洲清纯自拍| 国产精品久久网| 久久久久国产精品麻豆ai换脸| 久久久夜夜夜| 亚洲一区二区欧美| 久久爱www| 91久久精品一区| 99视频超级精品| 国产亚洲精品自拍| 亚洲精品久久| 国产精品免费一区豆花| 久久亚洲一区| 欧美日韩天天操| 老司机久久99久久精品播放免费| 欧美国产日本在线| 久久疯狂做爰流白浆xx| 欧美精品久久久久a| 欧美在线观看视频一区二区三区| 蜜臀av在线播放一区二区三区 | 亚洲精品一区在线观看香蕉| 国产日韩欧美麻豆| 中文网丁香综合网| 久久精品国产久精国产一老狼| 99re在线精品| 久久精品日产第一区二区| 99在线精品视频在线观看| 亚洲一区二区三区777| 亚洲精品乱码久久久久久蜜桃91| 亚洲欧美日韩在线播放| 亚洲无线一线二线三线区别av| 久久一区二区三区超碰国产精品| 亚洲一区二区视频在线观看| 美日韩精品免费| 久久青草福利网站| 国产精品亚洲网站| 国产精品99久久久久久久女警 | 午夜一区不卡| 欧美日韩成人| 亚洲国产精品久久久久秋霞不卡 | 蜜桃av一区二区| 久久精品国内一区二区三区| 欧美性一区二区| 99综合精品| 中国成人黄色视屏| 欧美激情综合色| 亚洲黑丝在线| 久久精品在线播放| 欧美体内she精视频| 亚洲人成网站777色婷婷| 亚洲精品女人| 欧美精品在线观看播放| 亚洲韩日在线| 日韩亚洲精品在线| 欧美精品在线视频| 日韩天天综合| 欧美韩日亚洲| 久久综合给合久久狠狠狠97色69| 国产欧美一区二区白浆黑人| 亚洲欧美春色| 久久久久久国产精品一区| 国产一区 二区 三区一级| 欧美伊人精品成人久久综合97| 久久精品水蜜桃av综合天堂| 国产一区av在线| 久久久无码精品亚洲日韩按摩| 毛片av中文字幕一区二区| 亚洲国产一区二区三区青草影视| 欧美 日韩 国产在线| 亚洲精品免费一区二区三区| 99xxxx成人网| 欧美视频日韩视频| 欧美一区二区成人6969| 麻豆精品在线视频| 亚洲麻豆av| 国产精品美女久久久浪潮软件 | 欧美丰满高潮xxxx喷水动漫| 91久久久久久久久| 欧美午夜www高清视频| 激情欧美国产欧美| 亚洲日韩欧美视频一区| 亚洲香蕉视频| 国产日本亚洲高清| 免费久久精品视频| 中文欧美在线视频| 久久人人九九| 亚洲欧洲偷拍精品| 国产精品午夜国产小视频| 久久久中精品2020中文| 亚洲毛片av在线| 久久久噜噜噜久久| 日韩亚洲在线| 黄色成人小视频| 欧美色123| 久久裸体艺术| 亚洲一区中文| 亚洲电影观看| 久久精品综合网| 亚洲午夜精品一区二区三区他趣| 国产欧美日韩在线| 欧美激情综合色| 久久久久这里只有精品| 91久久久久久久久| 快she精品国产999| 性色av一区二区三区| 亚洲精品在线免费| 狠狠色丁香久久婷婷综合_中| 欧美午夜视频在线| 欧美韩国一区| 久久久美女艺术照精彩视频福利播放| 一本大道久久a久久精二百| 亚洲第一区在线|