зеркало из https://github.com/mozilla/pjs.git
178 строки
8.0 KiB
C
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 */
|
|
|
|
|