summaryrefslogtreecommitdiff
path: root/noncore/net/mail/libmailwrapper/smtpwrapper.h
blob: 7dcdbfd5f0c75043444ce603d86d6bf1381d9b64 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
#ifndef SMTPwrapper_H
#define SMTPwrapper_H

#include <qpe/applnk.h>

#include <qbitarray.h>
#include <qdatetime.h>
#include <libetpan/clist.h>

#include "settings.h"

class Mail;
class AbstractMail;
class RecMail;
class Attachment;
struct mailimf_fields;
struct mailimf_field;
struct mailimf_mailbox;
struct mailmime;
struct mailimf_address_list;
class progressMailSend;

class SMTPwrapper : public QObject
{
    Q_OBJECT

public:
    SMTPwrapper( Settings *s ); 
    virtual ~SMTPwrapper(){}
    void sendMail(const Mail& mail,SMTPaccount*smtp,bool later=false );
    bool flushOutbox(SMTPaccount*smtp);

    static progressMailSend*sendProgress;

signals:
    void queuedMails( int );  

protected:
    mailimf_mailbox *newMailbox(const QString&name,const QString&mail );
    mailimf_fields *createImfFields(const Mail &mail );
    mailmime *createMimeMail(const Mail&mail );
    
    mailimf_address_list *parseAddresses(const QString&addr );
    void addFileParts( mailmime *message,const QList<Attachment>&files );
    mailmime *buildTxtPart(const QString&str );
    mailmime *buildFilePart(const QString&filename,const QString&mimetype,const QString&content);
    void smtpSend( mailmime *mail,bool later, SMTPaccount *smtp );
    clist *createRcptList( mailimf_fields *fields );
    
    static void storeMail(const char*mail, size_t length, const QString&box);
    static QString mailsmtpError( int err );
    static void progress( size_t current, size_t maximum );
    static void addRcpts( clist *list, mailimf_address_list *addr_list );
    static char *getFrom( mailmime *mail );
    static char *getFrom( mailimf_field *ffrom);
    static mailimf_field *getField( mailimf_fields *fields, int type );
    int smtpSend(char*from,clist*rcpts,const char*data,size_t size, SMTPaccount *smtp );

    void storeMail(mailmime*mail, const QString&box);
    Settings *settings;
    
    int sendQueuedMail(AbstractMail*wrap,SMTPaccount*smtp,RecMail*which);

    int m_queuedMail;
    static const char* USER_AGENT;

protected slots:
   void emitQCop( int queued );

};

#endif