Skip to content

Commit 84045c3

Browse files
committed
05-26 14:27
1 parent 7150ad7 commit 84045c3

File tree

8 files changed

+412
-169
lines changed

8 files changed

+412
-169
lines changed

MicroMailClient.pro.user

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<!DOCTYPE QtCreatorProject>
3-
<!-- Written by QtCreator 3.6.1, 2016-05-25T17:08:34. -->
3+
<!-- Written by QtCreator 3.6.1, 2016-05-26T14:23:41. -->
44
<qtcreator>
55
<data>
66
<variable>EnvironmentId</variable>

Model/IMAPClient.h

Lines changed: 40 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class IMAPClient : public ReceiveMailClient
4343

4444
}
4545

46-
void getFolders(QList<QString> & _folders) override{
46+
int getFolders(QList<QString> & _folders) override{
4747

4848
FolderInfoVec folders;
4949

@@ -53,46 +53,71 @@ class IMAPClient : public ReceiveMailClient
5353
_folders.push_back (QString::fromUtf8 (f.name.c_str()));
5454
}
5555

56+
return folders.size ();
5657
}
5758

58-
void getMailBodies(const QString & folder, QList<MAILBODY_PTR> & result) override{
59+
int selectFolder(const QString & folder) override{
5960

60-
Poco::Net::IMAPClientSession::MessageInfoVec msgs;
61+
_mailList.clear ();
6162

6263
std::vector<std::string> uids;
6364

65+
_selectedFolder = folder;
66+
6467
_session->listMessages (folder.toStdString (), uids);
6568

66-
_session->getMessages (folder.toStdString (), uids, msgs);
69+
_session->getMessages (folder.toStdString (), uids, _mailList);
70+
71+
qDebug() << "In select Folder, folder = "<< folder << ", mailList.size = " << _mailList.size () << "uids.size = " << uids.size ()<< "\n";
72+
73+
_curListIndex = 0;
74+
75+
return uids.size ();
76+
77+
}
78+
79+
int getMailBodies(QList<MAILBODY_PTR> & result, int count ) override{
6780

6881
std::string msg;
6982

70-
for ( auto info : msgs) {
83+
int counter = 0;
84+
85+
qDebug() << "listIndex = " <<_curListIndex << ", mailList.size=" << _mailList.size () << "\n";
86+
87+
for( ; _curListIndex < _mailList.size (); _curListIndex++, counter++) {
7188

72-
_session->loadMessage (folder.toStdString (), info, msg);
89+
if( counter >= count )
90+
break;
91+
92+
auto info = _mailList.at (_curListIndex);
93+
94+
_session->loadMessage (_selectedFolder.toStdString (), info, msg);
7395

7496
MAILBODY_PTR newmail = MAILBODY_PTR::create(QString::fromUtf8 (info.subject.c_str ()));
7597

7698
newmail->setContent (QString::fromUtf8 (msg.c_str ()));
7799
newmail->setSender (QString::fromUtf8 (info.from.c_str()));
78100
newmail->addRecipient (QString::fromUtf8 (info.to.c_str()));
101+
newmail->setDateTime (QString::fromUtf8 (info.date.c_str()));
79102
newmail->setIsread (false);
80103

81104
result.push_back (newmail);
82-
83105
}
84106

85-
}
86-
87-
void DeleteMail (const QList<int> & ids){
107+
return counter;
88108

89109
}
90110

91-
void setTimeout (int val){
111+
int DeleteMail (const QList<int> & ids) override{
112+
return 0;
113+
}
92114

115+
void setTimeout (int val) override{
116+
_session->socket ().setReceiveTimeout (val);
117+
_session->socket ().setSendTimeout (val);
93118
}
94119

95-
int getTimeout (){
120+
int getTimeout () override{
96121
return _session->socket ().getReceiveTimeout ().totalMilliseconds ();
97122
}
98123

@@ -102,6 +127,9 @@ class IMAPClient : public ReceiveMailClient
102127

103128
private:
104129

130+
131+
Poco::Net::IMAPClientSession::MessageInfoVec _mailList;
132+
105133
SESSION_PTR _session;
106134

107135
};

Model/IMAPClientSession.cpp

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -175,9 +175,9 @@ namespace Poco {
175175
NumberFormatter::append0(tag, _tag++, 10);
176176

177177
_socket.sendMessage(tag + " " + command);
178-
178+
#ifdef _DEBUG
179179
std::cout << tag + " " + command << std::endl;
180-
180+
#endif
181181
while (true) {
182182
_socket.receiveMessage(response);
183183
if (response.substr(0, tag.length()+1) != (tag+" ")) {
@@ -228,7 +228,7 @@ namespace Poco {
228228

229229
if (!sendCommand(oss.str(), response, data)) throw NetException("Cannot fetch messages", response);
230230

231-
sendCommand("CLOSE", response2, data2);
231+
// sendCommand("CLOSE", response2, data2);
232232

233233
for (int j = 0; j < data.size(); j++)
234234
{
@@ -326,13 +326,15 @@ namespace Poco {
326326

327327
loadText (info.uid, info.parts, "", message);
328328

329-
sendCommand ("CLOSE", response, data1);
329+
// sendCommand ("CLOSE", response, data1);
330330

331331
if ( data.size ( ) <= 2 ) return;
332332

333333
for ( int i = 1; i < data.size ( ) - 2; i++ ) {
334-
message += data[i];
335-
message += "\r\n";
334+
if( data[i].length() > 0 && data[i][0] != '*' ){
335+
message += data[i];
336+
message += "\r\n";
337+
}
336338
}
337339
}
338340

@@ -369,7 +371,11 @@ namespace Poco {
369371
}
370372

371373
} else {
372-
std::cout << "UNKNONW CONTENT TRANSFER TYPE" << std::endl;
374+
std::cout << "UNKNONW CONTENT TRANSFER TYPE: " ;
375+
for(auto s : attrs){
376+
std::cout << s << ";";
377+
}
378+
std::cout << std::endl;
373379
text += ss.str ( );
374380
//throw NetException ("UNKNOWN CONTENT TRANSFER TYPE");
375381
}
@@ -408,7 +414,7 @@ namespace Poco {
408414
if (!sendCommand(oss.str(), response, data)) throw NetException("Cannot fetch messages", response);
409415

410416
response1.clear(); data1.clear();
411-
if (!sendCommand("CLOSE", response1, data1)) throw NetException("Cannot close folder", response);
417+
// if (!sendCommand("CLOSE", response1, data1)) throw NetException("Cannot close folder", response);
412418

413419
for (int j = 0; j < data.size(); j++)
414420
{

Model/MailBody.h

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
#include<QSharedPointer>
1010
#include<QDebug>
1111

12+
#include <iostream>
1213
#include <string>
1314

1415

@@ -24,7 +25,7 @@ class MailBody : public QObject {
2425

2526
Q_PROPERTY(QString sender READ getSender CONSTANT)
2627

27-
Q_PROPERTY(QDateTime datetime READ getDateTime CONSTANT)
28+
Q_PROPERTY(QString datetime READ getDateTime CONSTANT)
2829

2930
Q_PROPERTY(bool isread READ getIsread WRITE setIsread CONSTANT)
3031

@@ -63,10 +64,15 @@ class MailBody : public QObject {
6364
_sender = s;
6465
}
6566

66-
QDateTime getDateTime(){
67+
QString getDateTime(){
6768
return _datetime;
6869
}
6970

71+
void setDateTime(QString val){
72+
_datetime = val;
73+
// _datetime = QDateTime::fromString (val, Qt::RFC2822Date);
74+
}
75+
7076
bool getIsread(){
7177
return _isread;
7278
}
@@ -79,8 +85,7 @@ class MailBody : public QObject {
7985
return _recipients;
8086
}
8187

82-
void addRecipient(QString r)
83-
{
88+
void addRecipient(QString r) {
8489
_recipients.push_back (r);
8590
}
8691

@@ -96,7 +101,7 @@ class MailBody : public QObject {
96101

97102
QString _sender;
98103

99-
QDateTime _datetime;
104+
QString _datetime;
100105

101106
QList<QString> _recipients;
102107

0 commit comments

Comments
 (0)