Statistics
| Revision:

root / libsylph / smtp.h @ 578

History | View | Annotate | Download (2.2 kB)

1
/*
2
 * LibSylph -- E-Mail client library
3
 * Copyright (C) 1999-2005 Hiroyuki Yamamoto
4
 *
5
 * This library is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU Lesser General Public
7
 * License as published by the Free Software Foundation; either
8
 * version 2.1 of the License, or (at your option) any later version.
9
 *
10
 * This library is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13
 * Lesser General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU Lesser General Public
16
 * License along with this library; if not, write to the Free Software
17
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
18
 */
19
20
#ifndef __SMTP_H__
21
#define __SMTP_H__
22
23
#ifdef HAVE_CONFIG_H
24
#  include "config.h"
25
#endif
26
27
#include <glib.h>
28
29
#include "session.h"
30
31
typedef struct _SMTPSession        SMTPSession;
32
33
#define SMTP_SESSION(obj)        ((SMTPSession *)obj)
34
35
#define MSGBUFSIZE                8192
36
37
typedef enum
38
{
39
        SM_OK                        = 0,
40
        SM_ERROR                = 128,
41
        SM_UNRECOVERABLE        = 129,
42
        SM_AUTHFAIL                = 130
43
} SMTPErrorValue;
44
45
typedef enum
46
{
47
        ESMTP_8BITMIME        = 1 << 0,
48
        ESMTP_SIZE        = 1 << 1,
49
        ESMTP_ETRN        = 1 << 2
50
} ESMTPFlag;
51
52
typedef enum
53
{
54
        SMTPAUTH_LOGIN      = 1 << 0,
55
        SMTPAUTH_CRAM_MD5   = 1 << 1,
56
        SMTPAUTH_DIGEST_MD5 = 1 << 2,
57
        SMTPAUTH_PLAIN      = 1 << 3
58
} SMTPAuthType;
59
60
typedef enum
61
{
62
        SMTP_READY,
63
        SMTP_CONNECTED,
64
        SMTP_HELO,
65
        SMTP_EHLO,
66
        SMTP_STARTTLS,
67
        SMTP_FROM,
68
        SMTP_AUTH,
69
        SMTP_AUTH_PLAIN,
70
        SMTP_AUTH_LOGIN_USER,
71
        SMTP_AUTH_LOGIN_PASS,
72
        SMTP_AUTH_CRAM_MD5,
73
        SMTP_RCPT,
74
        SMTP_DATA,
75
        SMTP_SEND_DATA,
76
        SMTP_EOM,
77
        SMTP_RSET,
78
        SMTP_QUIT,
79
        SMTP_ERROR,
80
        SMTP_DISCONNECTED,
81
82
        N_SMTP_PHASE
83
} SMTPState;
84
85
struct _SMTPSession
86
{
87
        Session session;
88
89
        SMTPState state;
90
91
#if USE_SSL
92
        gboolean tls_init_done;
93
#endif
94
95
        gchar *hostname;
96
97
        gchar *user;
98
        gchar *pass;
99
100
        gchar *from;
101
        GSList *to_list;
102
        GSList *cur_to;
103
104
        guchar *send_data;
105
        guint send_data_len;
106
107
        SMTPAuthType avail_auth_type;
108
        SMTPAuthType forced_auth_type;
109
        SMTPAuthType auth_type;
110
111
        SMTPErrorValue error_val;
112
        gchar *error_msg;
113
};
114
115
Session *smtp_session_new        (void);
116
117
#endif /* __SMTP_H__ */