smtp - SMTP セッションの処理

------------------------------------------------------------------------------
#define SMTP_SESSION(obj)	((SMTPSession *)obj)

Session オブジェクト obj を SMTPSession にキャストします。

------------------------------------------------------------------------------
#define MSGBUFSIZE

メッセージバッファのサイズです。

------------------------------------------------------------------------------
SMTPErrorValue

typedef enum
{
	SM_OK			= 0,
	SM_ERROR		= 128,
	SM_UNRECOVERABLE	= 129,
	SM_AUTHFAIL		= 130
} SMTPErrorValue;

SMTP のエラー状態を表す enum です。

------------------------------------------------------------------------------
ESMTPFlag

typedef enum
{
	ESMTP_8BITMIME	= 1 << 0,
	ESMTP_SIZE	= 1 << 1,
	ESMTP_ETRN	= 1 << 2
} ESMTPFlag;

ESMTP 時に利用可能な機能を表す enum です。

------------------------------------------------------------------------------
SMTPAuthType

typedef enum
{
	SMTPAUTH_LOGIN      = 1 << 0,
	SMTPAUTH_CRAM_MD5   = 1 << 1,
	SMTPAUTH_DIGEST_MD5 = 1 << 2,
	SMTPAUTH_PLAIN      = 1 << 3
} SMTPAuthType;

SMTP AUTH 時の認証方法を表す enum です。

------------------------------------------------------------------------------
SMTPState

typedef enum
{
	SMTP_READY,
	SMTP_CONNECTED,
	SMTP_HELO,
	SMTP_EHLO,
	SMTP_STARTTLS,
	SMTP_FROM,
	SMTP_AUTH,
	SMTP_AUTH_PLAIN,
	SMTP_AUTH_LOGIN_USER,
	SMTP_AUTH_LOGIN_PASS,
	SMTP_AUTH_CRAM_MD5,
	SMTP_RCPT,
	SMTP_DATA,
	SMTP_SEND_DATA,
	SMTP_EOM,
	SMTP_RSET,
	SMTP_QUIT,
	SMTP_ERROR,
	SMTP_DISCONNECTED,

	N_SMTP_PHASE
} SMTPState;

SMTPSession の状態を表す enum です。

------------------------------------------------------------------------------
SMTPSession

struct _SMTPSession
{
	Session session;

	SMTPState state;

	gboolean tls_init_done;

	gchar *hostname;

	gchar *user;
	gchar *pass;

	gchar *from;
	GSList *to_list;
	GSList *cur_to;

	FILE *send_data_fp;
	gint send_data_len;

	SMTPAuthType avail_auth_type;
	SMTPAuthType forced_auth_type;
	SMTPAuthType auth_type;

	SMTPErrorValue error_val;
	gchar *error_msg;
};

SMTP セッションを表す構造体です。 Session のサブクラスになります。

------------------------------------------------------------------------------
Session *smtp_session_new	(void);

SMTPSession オブジェクトを作成します。

戻り値: 新しい SMTPSession オブジェクト(Session にキャスト)
