gecko-dev/msgsdk/C/protocol/SMTP/include/smtp.h

178 строки
8.0 KiB
C

/*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Netscape Messaging Access SDK Version 3.5 code,
* released on or about June 15, 1998. *
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s): ______________________________________.
*/
/*
* Copyright (c) 1997 and 1998 Netscape Communications Corporation
* (http://home.netscape.com/misc/trademarks.html)
*/
#ifndef SMTP_H
#define SMTP_H
/*
* smtp.h
* @author derekt@netscape.com
* @version 1.0
*/
#include "nsmail.h"
#include <stdio.h>
/* Structure used by a client to communicate to a SMTP server. */
typedef struct smtpClient smtpClient_t;
/* Forward declaration of the SMTP notification sink. */
typedef struct smtpSink * smtpSinkPtr_t;
/* Definition of the SMTP notification sink. */
typedef struct smtpSink
{
/* User data. */
void * pOpaqueData;
/* Notification for the response to the BDAT command. */
void (*bdat)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_responseMessage );
/* Notification for the response to the connection to the server. */
void (*connect)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_responseMessage );
/* Notification for the response to the DATA command. */
void (*data)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_responseMessage );
/* Notification for the response to the EHLO command. */
void (*ehlo)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_serverExtension );
/* Notification for the completion of the EHLO command. */
void (*ehloComplete)(smtpSinkPtr_t in_psmtpSink );
/* Notification for an error. */
void (*error)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_errorMessage );
/* Notification for the response to the EXPN command. */
void (*expand)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_emailAddress );
/* Notification for the completion of the EXPN command. */
void (*expandComplete)(smtpSinkPtr_t in_psmtpSink);
/* Notification for the response to the HELP command. */
void (*help)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_helpMessage );
/* Notification for the completion of the HELP command. */
void (*helpComplete)(smtpSinkPtr_t in_psmtpSink );
/* Notification for the response to the MAIL FROM command. */
void (*mailFrom)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_responseMessage );
/* Notification for the response to the NOOP command. */
void (*noop)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_responseMessage );
/* Notification for the response to the QUIT command. */
void (*quit)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_responseMessage );
/* Notification for the response to the RCPT TO command. */
void (*rcptTo)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_responseMessage );
/* Notification for the response to the RSET command. */
void (*reset)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_responseMessage );
/* Notification for the response to data sent to the server. */
void (*send)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_responseMessage );
/* Notification for the response to sendCommand() method. */
void (*sendCommand)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_responseMessage );
/* Notification for the completion of the extended command. */
void (*sendCommandComplete)(smtpSinkPtr_t in_psmtpSink );
/* Notification for the response to the VRFY command. */
void (*verify)( smtpSinkPtr_t in_psmtpSink, int in_responseCode, const char * in_responseMessage );
} smtpSink_t;
#ifdef __cplusplus
extern "C" {
#endif /* __cplusplus */
/* Initializes and allocates the smtpClient_t structure and sets the sink. */
int smtp_initialize( smtpClient_t ** out_ppSMTP, smtpSink_t * in_psmtpSink );
/* Initializes and allocates the smtpSink_t structure. */
int smtpSink_initialize( smtpSink_t ** out_ppsmtpSink );
/* Function used to free the smtpClient_t structure and it's data members. */
void smtp_free( smtpClient_t ** in_ppSMTP );
/* Function used to free the smtpSink_t structure. */
void smtpSink_free( smtpSink_t ** in_ppsmtpSink );
/* Function used to close the socket connection. */
int smtp_disconnect( smtpClient_t * in_pSMTP );
/* Protocol commands */
int smtp_bdat( smtpClient_t * in_pSMTP,
const char * in_data,
unsigned int length,
boolean in_fLast );
int smtp_connect( smtpClient_t * in_pSMTP,
const char * in_server,
unsigned short in_port );
int smtp_data( smtpClient_t * in_pSMTP );
int smtp_ehlo( smtpClient_t * in_pSMTP, const char * in_domain );
int smtp_expand( smtpClient_t * in_pSMTP, const char * in_mailingList );
int smtp_help( smtpClient_t * in_pSMTP, const char * in_helpTopic );
int smtp_mailFrom( smtpClient_t * in_pSMTP,
const char * in_reverseAddress,
const char * in_esmtpParams );
int smtp_noop( smtpClient_t * in_pSMTP );
int smtp_quit( smtpClient_t * in_pSMTP );
int smtp_rcptTo( smtpClient_t * in_pSMTP,
const char * in_forwardAddress,
const char * in_esmtpParams );
int smtp_reset( smtpClient_t * in_pSMTP );
int smtp_send( smtpClient_t * in_pSMTP, const char * in_data );
int smtp_sendStream( smtpClient_t * in_pSMTP, nsmail_inputstream_t * in_inputStream );
int smtp_sendCommand( smtpClient_t * in_pSMTP, const char * in_command );
int smtp_verify( smtpClient_t * in_pSMTP, const char * in_user );
/*
int smtp_sendMessage( const char * in_server,
const char * in_domain,
const char * in_sender,
const char * in_recipients,
const char * in_message,
char * out_serverError );
int smtp_sendMessageStream( const char * in_server,
const char * in_domain,
const char * in_sender,
const char * in_recipients,
nsmail_inputstream_t * in_inputStream,
char * out_serverError );
*/
/*
* A function used to process the server responses for API commands.
* This function will invoke the callback functions provided by the user
* for all responses that are available at the time of execution.
*/
int smtp_processResponses( smtpClient_t * in_pSMTP );
/* Sets the size of the message data chunk sent to the server. */
int smtp_setChunkSize( smtpClient_t * in_pSMTP, int in_chunkSize );
/* Attempts to enable PIPELINING. */
int smtp_setPipelining( smtpClient_t * in_pSMTP, boolean in_enablePipelining );
/* Sets a new response sink. */
int smtp_setResponseSink( smtpClient_t * in_pSMTP, smtpSink_t * in_psmtpSink );
/* Sets the timeout used in smtp_processResponses(). */
int smtp_setTimeout( smtpClient_t * in_pSMTP, double in_timeout );
/* Function used for setting io and threading models. */
int smtp_set_option( smtpClient_t * in_pSMTP, int in_option, void * in_pOptionData );
/* Function used for getting io and threading models. */
int smtp_get_option( smtpClient_t * in_pSMTP, int in_option, void * in_pOptionData );
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif /* SMTP_H */