Fix error creation and warning
[claws.git] / src / common / smtp.h
blob07517735c631d51fc3f5002661217a623667f1ed
1 /*
2 * Claws Mail -- a GTK based, lightweight, and fast e-mail client
3 * Copyright (C) 1999-2012 Hiroyuki Yamamoto and the Claws Mail team
5 * This program is free software; you can redistribute it and/or modify
6 * it under the terms of the GNU General Public License as published by
7 * the Free Software Foundation; either version 3 of the License, or
8 * (at your option) any later version.
10 * This program 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
13 * GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License
16 * along with this program. If not, see <http://www.gnu.org/licenses/>.
20 #ifndef __SMTP_H__
21 #define __SMTP_H__
23 #ifdef HAVE_CONFIG_H
24 #include "claws-features.h"
25 #endif
27 #include <glib.h>
29 #include "session.h"
31 typedef struct _SMTPSession SMTPSession;
33 #define SMTP_SESSION(obj) ((SMTPSession *)obj)
35 #define MESSAGEBUFSIZE 8192
37 typedef enum
39 SM_OK = 0,
40 SM_ERROR = 128,
41 SM_UNRECOVERABLE = 129,
42 SM_AUTHFAIL = 130
43 } SMTPErrorValue;
45 typedef enum
47 ESMTP_8BITMIME = 1 << 0,
48 ESMTP_SIZE = 1 << 1,
49 ESMTP_ETRN = 1 << 2
50 } ESMTPFlag;
52 typedef enum
54 SMTPAUTH_LOGIN = 1 << 0,
55 SMTPAUTH_CRAM_MD5 = 1 << 1,
56 SMTPAUTH_DIGEST_MD5 = 1 << 2,
57 SMTPAUTH_TLS_AVAILABLE = 1 << 3,
58 SMTPAUTH_PLAIN = 1 << 4,
59 SMTPAUTH_OAUTH2 = 1 << 5
60 } SMTPAuthType;
62 typedef enum
64 SMTP_READY,
65 SMTP_HELO,
66 SMTP_EHLO,
67 SMTP_STARTTLS,
68 SMTP_FROM,
69 SMTP_AUTH,
70 SMTP_AUTH_LOGIN_USER,
71 SMTP_AUTH_LOGIN_PASS,
72 SMTP_AUTH_CRAM_MD5,
73 SMTP_AUTH_PLAIN,
74 SMTP_AUTH_OAUTH2,
75 SMTP_RCPT,
76 SMTP_DATA,
77 SMTP_SEND_DATA,
78 SMTP_EOM,
79 SMTP_RSET,
80 SMTP_QUIT,
81 SMTP_ERROR,
82 SMTP_DISCONNECTED,
83 SMTP_MAIL_SENT_OK,
85 N_SMTP_PHASE
86 } SMTPState;
88 struct _SMTPSession
90 Session session;
92 SMTPState state;
94 gchar *hostname;
96 gchar *user;
97 gchar *pass;
99 gchar *from;
100 GSList *to_list;
101 GSList *cur_to;
103 guchar *send_data;
104 guint send_data_len;
106 gint max_message_size;
108 SMTPAuthType avail_auth_type;
109 SMTPAuthType forced_auth_type;
110 SMTPAuthType auth_type;
112 SMTPErrorValue error_val;
113 gchar *error_msg;
114 gboolean is_esmtp;
115 ESMTPFlag esmtp_flags;
117 void *dialog;
119 #ifdef USE_GNUTLS
120 gboolean tls_init_done;
121 #endif
124 Session *smtp_session_new (void *prefs_account);
125 gint smtp_from(SMTPSession *session);
126 gint smtp_quit(SMTPSession *session);
128 #endif /* __SMTP_H__ */