ncbi_sendmail.h
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:8k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: ncbi_sendmail.h,v $
  4.  * PRODUCTION Revision 1000.1  2004/02/12 21:51:48  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [CORE_001] Dev-tree R6.16
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef CONNECT___NCBI_SENDMAIL__H
  10. #define CONNECT___NCBI_SENDMAIL__H
  11. /*  $Id: ncbi_sendmail.h,v 1000.1 2004/02/12 21:51:48 gouriano Exp $
  12.  * ===========================================================================
  13.  *
  14.  *                            PUBLIC DOMAIN NOTICE
  15.  *               National Center for Biotechnology Information
  16.  *
  17.  *  This software/database is a "United States Government Work" under the
  18.  *  terms of the United States Copyright Act.  It was written as part of
  19.  *  the author's official duties as a United States Government employee and
  20.  *  thus cannot be copyrighted.  This software/database is freely available
  21.  *  to the public for use. The National Library of Medicine and the U.S.
  22.  *  Government have not placed any restriction on its use or reproduction.
  23.  *
  24.  *  Although all reasonable efforts have been taken to ensure the accuracy
  25.  *  and reliability of the software and data, the NLM and the U.S.
  26.  *  Government do not and cannot warrant the performance or results that
  27.  *  may be obtained by using this software or data. The NLM and the U.S.
  28.  *  Government disclaim all warranties, express or implied, including
  29.  *  warranties of performance, merchantability or fitness for any particular
  30.  *  purpose.
  31.  *
  32.  *  Please cite the author in any work or product based on this material.
  33.  *
  34.  * ===========================================================================
  35.  *
  36.  * Author:  Anton Lavrentiev
  37.  *
  38.  * File Description:
  39.  *   Send mail (in accordance with RFC821 [protocol] and RFC822 [headers])
  40.  *
  41.  */
  42. #include <connect/ncbi_types.h>
  43. /** @addtogroup Sendmail
  44.  *
  45.  * @{
  46.  */
  47. #ifdef __cplusplus
  48. extern "C" {
  49. #endif
  50. /* Default values for the structure below */
  51. #define MX_HOST         "mailgw.ncbi.nlm.nih.gov"
  52. #define MX_PORT         25
  53. #define MX_TIMEOUT      120
  54. /* Define optional parameters for communication with sendmail
  55.  */
  56. typedef struct {
  57.     unsigned int magic_number;  /* Filled in by SendMailInfo_Init        */
  58.     const char*  cc;            /* Carbon copy recipient(s)              */
  59.     const char*  bcc;           /* Blind carbon copy recipient(s)        */
  60.     char         from[1024];    /* Originator address                    */
  61.     const char*  header;        /* Custom header fields ('n'-separated) */
  62.     size_t       body_size;     /* Message body size (if specified)      */ 
  63.     const char*  mx_host;       /* Host to contact sendmail at           */
  64.     short        mx_port;       /* Port to contact sendmail at           */
  65.     STimeout     mx_timeout;    /* Timeout for all network transactions  */
  66.     unsigned     mx_no_header;  /* Boolean whether to complete MX header */
  67. } SSendMailInfo;
  68. /* NOTE about recipient lists:
  69.  * They are not parsed; valid recipient (according to the standard)
  70.  * can be specified in the form "Name" <address>; recipients should
  71.  * be separated by commas. In case of address-only recipients (no "Name"
  72.  * part above), angle brackets around the address may be omitted.
  73.  *
  74.  * NOTE about message body size:
  75.  * If not specified (0) and by default the message body size is calculated
  76.  * as strlen() of passed body argument, which must be NUL-terminated.
  77.  * Otherwise, exactly "body_size" bytes are read from the location pointed
  78.  * to by "body" parameter and are sent in the message.
  79.  *
  80.  * NOTE about MX header:
  81.  * message header is automatically prepended to a message that has
  82.  * "mx_no_header" flag cleared (default).  Otherwise, only "header" part
  83.  * (if any) is sent to the mail exchanger, and the rest of the header and
  84.  * the message body is passed "as is" following it.
  85.  * Message header separator and proper message formatting is then
  86.  * the caller's responsibility.
  87.  */
  88. /* Initialize SSendMailInfo structure, setting:
  89.  *   'magic_number' to a proper value (verified by CORE_SendMailEx()!);
  90.  *   'cc', 'bcc', 'header' to NULL (means no recipients/additional headers);
  91.  *   'from' filled out using the current user name (if discovered, 'anonymous'
  92.  *          otherwise) and host in the form: username@hostname; may be later
  93.  *          reset by the application to "" for sending no-return messages
  94.  *          (aka MAILER-DAEMON messages);
  95.  *   'mx_*' filled out in accordance with corresponding macros defined above;
  96.  *          application may choose different values afterwards.
  97.  * Return value equals the argument passed in.
  98.  * Note: This call is the only valid way to init SSendMailInfo.
  99.  */
  100. extern NCBI_XCONNECT_EXPORT SSendMailInfo* SendMailInfo_Init
  101. (SSendMailInfo*       info
  102.  );
  103. /* Send a simple message to recipient(s) defined in 'to',
  104.  * and having subject 'subject', which may be empty (both NULL and "" treated
  105.  * equally as empty subjects), and message body 'body' (may be NULL/empty,
  106.  * if not empty, lines are separated by 'n', must be NUL-terminated).
  107.  * Return value 0 means success; otherwise descriptive error message
  108.  * gets returned. Communicaiton parameters for connection with sendmail
  109.  * are set using default values as described in SendMailInfo_Init().
  110.  */
  111. extern NCBI_XCONNECT_EXPORT const char* CORE_SendMail
  112. (const char*          to,
  113.  const char*          subject,
  114.  const char*          body
  115.  );
  116. /* Send a message as in CORE_SendMail() but by explicitly specifying
  117.  * all additional parameters of the message and the communication via
  118.  * argument 'info'. In case of 'info' == NULL, the call is completely
  119.  * equivalent to CORE_SendMail().
  120.  * NB: Body is not neccessarily NUL-terminated if "info" contains non-default
  121.  * (non-zero) message body size (see SSendMailInfo::body_size above).
  122.  */
  123. extern NCBI_XCONNECT_EXPORT const char* CORE_SendMailEx
  124. (const char*          to,
  125.  const char*          subject,
  126.  const char*          body,
  127.  const SSendMailInfo* info
  128.  );
  129. #ifdef __cplusplus
  130. }  /* extern "C" */
  131. #endif
  132. /* @} */
  133. /*
  134.  * --------------------------------------------------------------------------
  135.  * $Log: ncbi_sendmail.h,v $
  136.  * Revision 1000.1  2004/02/12 21:51:48  gouriano
  137.  * PRODUCTION: UPGRADED [CORE_001] Dev-tree R6.16
  138.  *
  139.  * Revision 6.16  2003/12/09 15:38:02  lavr
  140.  * +SSendMailInfo::body_size and remarks about its use
  141.  *
  142.  * Revision 6.15  2003/12/04 14:54:39  lavr
  143.  * Extend API with no-header and multiple recipient capabilities
  144.  *
  145.  * Revision 6.14  2003/09/02 20:45:45  lavr
  146.  * -<connect/connect_export.h> -- now included from <connect/ncbi_types.h>
  147.  *
  148.  * Revision 6.13  2003/04/09 19:05:47  siyan
  149.  * Added doxygen support
  150.  *
  151.  * Revision 6.12  2003/01/21 20:02:54  lavr
  152.  * Added missing <connect/connect_export.h>
  153.  *
  154.  * Revision 6.11  2003/01/17 19:44:20  lavr
  155.  * Reduce dependencies
  156.  *
  157.  * Revision 6.10  2003/01/08 01:59:33  lavr
  158.  * DLL-ize CONNECT library for MSVC (add NCBI_XCONNECT_EXPORT)
  159.  *
  160.  * Revision 6.9  2002/09/24 15:01:17  lavr
  161.  * File description indented uniformly
  162.  *
  163.  * Revision 6.8  2002/08/14 18:51:33  lavr
  164.  * Change MX from "nes" to more generic mail hub "mailgw.ncbi.nlm.nih.gov"
  165.  *
  166.  * Revision 6.7  2002/08/14 16:38:55  lavr
  167.  * Change default MX from "ncbi" to "nes"
  168.  *
  169.  * Revision 6.6  2002/06/12 20:07:32  lavr
  170.  * Tiny correction of file description
  171.  *
  172.  * Revision 6.5  2002/06/12 19:20:12  lavr
  173.  * Few patches in comments; guard macro name standardized; log moved down
  174.  *
  175.  * Revision 6.4  2001/07/10 15:07:51  lavr
  176.  * More comments added
  177.  *
  178.  * Revision 6.3  2001/03/01 01:03:46  lavr
  179.  * SendMailInfo_Init got extern
  180.  *
  181.  * Revision 6.2  2001/02/28 18:13:02  lavr
  182.  * Heavily documented
  183.  *
  184.  * Revision 6.1  2001/02/28 00:52:37  lavr
  185.  * Initial revision
  186.  *
  187.  * ==========================================================================
  188.  */
  189. #endif /* CONNECT___NCBI_SENDMAIL__H */