1 /* 2 * Sylpheed -- a GTK+ based, lightweight, and fast e-mail client 3 * Copyright (C) 1999-2012 Hiroyuki Yamamoto and the Claws Mail team 4 * 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. 9 * 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. 14 * 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/>. 17 * 18 */ 19 20 #ifndef __SMTP_H__ 21 #define __SMTP_H__ 22 23 #ifdef HAVE_CONFIG_H 24 #include "claws-features.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 MESSAGEBUFSIZE 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_TLS_AVAILABLE = 1 << 3, 58 SMTPAUTH_PLAIN = 1 << 4, 59 SMTPAUTH_OAUTH2 = 1 << 5 60 } SMTPAuthType; 61 62 typedef enum 63 { 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, 84 85 N_SMTP_PHASE 86 } SMTPState; 87 88 struct _SMTPSession 89 { 90 Session session; 91 92 SMTPState state; 93 94 gchar *hostname; 95 96 gchar *user; 97 gchar *pass; 98 99 gchar *from; 100 GSList *to_list; 101 GSList *cur_to; 102 103 guchar *send_data; 104 guint send_data_len; 105 106 gint max_message_size; 107 108 SMTPAuthType avail_auth_type; 109 SMTPAuthType forced_auth_type; 110 SMTPAuthType auth_type; 111 112 SMTPErrorValue error_val; 113 gchar *error_msg; 114 gboolean is_esmtp; 115 ESMTPFlag esmtp_flags; 116 117 void *dialog; 118 119 #ifdef USE_GNUTLS 120 gboolean tls_init_done; 121 #endif 122 }; 123 124 Session *smtp_session_new (void *prefs_account); 125 gint smtp_from(SMTPSession *session); 126 gint smtp_quit(SMTPSession *session); 127 128 #endif /* __SMTP_H__ */ 129