summaryrefslogtreecommitdiff
path: root/noncore/net/mail/libmailwrapper
Side-by-side diff
Diffstat (limited to 'noncore/net/mail/libmailwrapper') (more/less context) (show whitespace changes)
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.cpp74
-rw-r--r--noncore/net/mail/libmailwrapper/pop3wrapper.h28
-rw-r--r--noncore/net/mail/libmailwrapper/settings.cpp4
3 files changed, 102 insertions, 4 deletions
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.cpp b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
new file mode 100644
index 0000000..08e97f4
--- a/dev/null
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.cpp
@@ -0,0 +1,74 @@
+
+#include "pop3wrapper.h"
+#include "mailtypes.h"
+#include <libetpan/mailpop3.h>
+
+POP3wrapper::POP3wrapper( POP3account *a )
+{
+ account = a;
+}
+
+POP3wrapper::~POP3wrapper()
+{
+ logout();
+}
+
+void POP3wrapper::pop3_progress( size_t current, size_t maximum )
+{
+ qDebug( "POP3: %i of %i", current, maximum );
+}
+
+void POP3wrapper::listMessages( QList<RecMail> &target )
+{
+ login();
+ //TODO: list messages
+ logout();
+}
+
+void POP3wrapper::login()
+{
+ logout();
+ const char *server, *user, *pass;
+ uint16_t port;
+ int err = MAILPOP3_NO_ERROR;
+
+ server = account->getServer().latin1();
+ port = account->getPort().toUInt();
+ user = account->getUser().latin1();
+ pass = account->getPassword().latin1();
+
+ m_pop3 = mailpop3_new( 20, &pop3_progress );
+
+ // connect
+ err = mailpop3_socket_connect( m_pop3, (char *) server, port );
+ if ( err != MAILPOP3_NO_ERROR ) {
+ qDebug( "pop3: error connecting to %s\n reason: %s", server,
+ m_pop3->response );
+ mailpop3_free( m_pop3 );
+ m_pop3 = NULL;
+ return;
+ }
+ qDebug( "POP3: connected!" );
+
+ // login
+ // TODO: decide if apop or plain login should be used
+ err = mailpop3_login( m_pop3, (char *) user, (char *) pass );
+ if ( err != MAILPOP3_NO_ERROR ) {
+ qDebug( "pop3: error logging in: %s", m_pop3->response );
+ logout();
+ return;
+ }
+
+ qDebug( "POP3: logged in!" );
+}
+
+void POP3wrapper::logout()
+{
+ int err = MAILPOP3_NO_ERROR;
+ if ( !m_pop3 ) return;
+ err = mailpop3_quit( m_pop3 );
+ mailpop3_free( m_pop3 );
+ m_pop3 = NULL;
+}
+
+
diff --git a/noncore/net/mail/libmailwrapper/pop3wrapper.h b/noncore/net/mail/libmailwrapper/pop3wrapper.h
new file mode 100644
index 0000000..b791409
--- a/dev/null
+++ b/noncore/net/mail/libmailwrapper/pop3wrapper.h
@@ -0,0 +1,28 @@
+#ifndef __POP3WRAPPER
+#define __POP3WRAPPER
+
+#include "mailwrapper.h"
+
+class RecMail;
+
+class POP3wrapper : public QObject
+{
+ Q_OBJECT
+
+public:
+ POP3wrapper( POP3account *a );
+ virtual ~POP3wrapper();
+ void listMessages( QList<RecMail> &target );
+ static void pop3_progress( size_t current, size_t maximum );
+
+protected:
+ void login();
+ void logout();
+
+private:
+ POP3account *account;
+ mailpop3 *m_pop3;
+
+};
+
+#endif
diff --git a/noncore/net/mail/libmailwrapper/settings.cpp b/noncore/net/mail/libmailwrapper/settings.cpp
index 9632301..b580954 100644
--- a/noncore/net/mail/libmailwrapper/settings.cpp
+++ b/noncore/net/mail/libmailwrapper/settings.cpp
@@ -111,49 +111,48 @@ IMAPaccount::IMAPaccount()
{
file = IMAPaccount::getUniqueFileName();
accountName = "New IMAP Account";
ssl = false;
type = "IMAP";
port = IMAP_PORT;
}
IMAPaccount::IMAPaccount( QString filename )
: Account()
{
file = filename;
accountName = "New IMAP Account";
ssl = false;
type = "IMAP";
port = IMAP_PORT;
}
QString IMAPaccount::getUniqueFileName()
{
int num = 0;
QString unique;
QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" );
- QStringList::Iterator it;
QStringList imap = dir.entryList( "imap-*" );
do {
unique.setNum( num++ );
} while ( imap.contains( "imap-" + unique ) > 0 );
return unique;
}
void IMAPaccount::read()
{
Config *conf = new Config( getFileName(), Config::File );
conf->setGroup( "IMAP Account" );
accountName = conf->readEntry( "Account","" );
if (accountName.isNull()) accountName = "";
server = conf->readEntry( "Server","" );
if (server.isNull()) server="";
port = conf->readEntry( "Port","" );
if (port.isNull()) port="143";
ssl = conf->readBoolEntry( "SSL",false );
user = conf->readEntry( "User","" );
if (user.isNull()) user = "";
password = conf->readEntryCrypt( "Password","" );
if (password.isNull()) password = "";
@@ -189,49 +188,48 @@ POP3account::POP3account()
{
file = POP3account::getUniqueFileName();
accountName = "New POP3 Account";
ssl = false;
type = "POP3";
port = POP3_PORT;
}
POP3account::POP3account( QString filename )
: Account()
{
file = filename;
accountName = "New POP3 Account";
ssl = false;
type = "POP3";
port = POP3_PORT;
}
QString POP3account::getUniqueFileName()
{
int num = 0;
QString unique;
QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" );
- QStringList::Iterator it;
QStringList imap = dir.entryList( "pop3-*" );
do {
unique.setNum( num++ );
} while ( imap.contains( "pop3-" + unique ) > 0 );
return unique;
}
void POP3account::read()
{
Config *conf = new Config( getFileName(), Config::File );
conf->setGroup( "POP3 Account" );
accountName = conf->readEntry( "Account" );
server = conf->readEntry( "Server" );
port = conf->readEntry( "Port" );
ssl = conf->readBoolEntry( "SSL" );
user = conf->readEntry( "User" );
password = conf->readEntryCrypt( "Password" );
}
void POP3account::save()
{
qDebug( "saving " + getFileName() );
@@ -267,49 +265,48 @@ SMTPaccount::SMTPaccount()
type = "SMTP";
port = SMTP_PORT;
}
SMTPaccount::SMTPaccount( QString filename )
: Account()
{
file = filename;
accountName = "New SMTP Account";
ssl = false;
login = false;
useCC = false;
useBCC = false;
useReply = false;
type = "SMTP";
port = SMTP_PORT;
}
QString SMTPaccount::getUniqueFileName()
{
int num = 0;
QString unique;
QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" );
- QStringList::Iterator it;
QStringList imap = dir.entryList( "smtp-*" );
do {
unique.setNum( num++ );
} while ( imap.contains( "smtp-" + unique ) > 0 );
return unique;
}
void SMTPaccount::read()
{
Config *conf = new Config( getFileName(), Config::File );
conf->setGroup( "SMTP Account" );
accountName = conf->readEntry( "Account" );
server = conf->readEntry( "Server" );
port = conf->readEntry( "Port" );
ssl = conf->readBoolEntry( "SSL" );
login = conf->readBoolEntry( "Login" );
user = conf->readEntry( "User" );
password = conf->readEntryCrypt( "Password" );
useCC = conf->readBoolEntry( "useCC" );
useBCC = conf->readBoolEntry( "useBCC" );
useReply = conf->readBoolEntry( "useReply" );
name = conf->readEntry( "Name" );
@@ -363,49 +360,48 @@ NNTPaccount::NNTPaccount()
accountName = "New NNTP Account";
ssl = false;
login = false;
type = "NNTP";
port = NNTP_PORT;
}
NNTPaccount::NNTPaccount( QString filename )
: Account()
{
file = filename;
accountName = "New NNTP Account";
ssl = false;
login = false;
type = "NNTP";
port = NNTP_PORT;
}
QString NNTPaccount::getUniqueFileName()
{
int num = 0;
QString unique;
QDir dir( (QString) getenv( "HOME" ) + "/Applications/opiemail" );
- QStringList::Iterator it;
QStringList imap = dir.entryList( "nntp-*" );
do {
unique.setNum( num++ );
} while ( imap.contains( "nntp-" + unique ) > 0 );
return unique;
}
void NNTPaccount::read()
{
Config *conf = new Config( getFileName(), Config::File );
conf->setGroup( "NNTP Account" );
accountName = conf->readEntry( "Account" );
server = conf->readEntry( "Server" );
port = conf->readEntry( "Port" );
ssl = conf->readBoolEntry( "SSL" );
login = conf->readBoolEntry( "Login" );
user = conf->readEntry( "User" );
password = conf->readEntryCrypt( "Password" );
}
void NNTPaccount::save()
{