source: azure_iot_hub_f767zi/trunk/asp_baseplatform/lwip/lwip-2.1.2/src/include/lwip/apps/smtp.h@ 457

Last change on this file since 457 was 457, checked in by coas-nagasima, 4 years ago

ファイルを追加

  • Property svn:eol-style set to native
  • Property svn:mime-type set to text/x-chdr;charset=UTF-8
File size: 4.4 KB
Line 
1#ifndef LWIP_HDR_APPS_SMTP_H
2#define LWIP_HDR_APPS_SMTP_H
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
8#include "lwip/apps/smtp_opts.h"
9#include "lwip/err.h"
10#include "lwip/prot/iana.h"
11
12/** The default TCP port used for SMTP */
13#define SMTP_DEFAULT_PORT LWIP_IANA_PORT_SMTP
14/** The default TCP port used for SMTPS */
15#define SMTPS_DEFAULT_PORT LWIP_IANA_PORT_SMTPS
16
17/** Email successfully sent */
18#define SMTP_RESULT_OK 0
19/** Unknown error */
20#define SMTP_RESULT_ERR_UNKNOWN 1
21/** Connection to server failed */
22#define SMTP_RESULT_ERR_CONNECT 2
23/** Failed to resolve server hostname */
24#define SMTP_RESULT_ERR_HOSTNAME 3
25/** Connection unexpectedly closed by remote server */
26#define SMTP_RESULT_ERR_CLOSED 4
27/** Connection timed out (server didn't respond in time) */
28#define SMTP_RESULT_ERR_TIMEOUT 5
29/** Server responded with an unknown response code */
30#define SMTP_RESULT_ERR_SVR_RESP 6
31/** Out of resources locally */
32#define SMTP_RESULT_ERR_MEM 7
33
34/** Prototype of an smtp callback function
35 *
36 * @param arg argument specified when initiating the email
37 * @param smtp_result result of the mail transfer (see defines SMTP_RESULT_*)
38 * @param srv_err if aborted by the server, this contains the error code received
39 * @param err an error returned by internal lwip functions, can help to specify
40 * the source of the error but must not necessarily be != ERR_OK
41 */
42typedef void (*smtp_result_fn)(void *arg, u8_t smtp_result, u16_t srv_err, err_t err);
43
44/** This structure is used as argument for smtp_send_mail_int(),
45 * which in turn can be used with tcpip_callback() to send mail
46 * from interrupt context, e.g. like this:
47 * struct smtp_send_request *req; (to be filled)
48 * tcpip_try_callback(smtp_send_mail_int, (void*)req);
49 *
50 * For member description, see parameter description of smtp_send_mail().
51 * When using with tcpip_callback, this structure has to stay allocated
52 * (e.g. using mem_malloc/mem_free) until its 'callback_fn' is called.
53 */
54struct smtp_send_request {
55 const char *from;
56 const char* to;
57 const char* subject;
58 const char* body;
59 smtp_result_fn callback_fn;
60 void* callback_arg;
61 /** If this is != 0, data is *not* copied into an extra buffer
62 * but used from the pointers supplied in this struct.
63 * This means less memory usage, but data must stay untouched until
64 * the callback function is called. */
65 u8_t static_data;
66};
67
68
69#if SMTP_BODYDH
70
71#ifndef SMTP_BODYDH_BUFFER_SIZE
72#define SMTP_BODYDH_BUFFER_SIZE 256
73#endif /* SMTP_BODYDH_BUFFER_SIZE */
74
75struct smtp_bodydh {
76 u16_t state;
77 u16_t length; /* Length of content in buffer */
78 char buffer[SMTP_BODYDH_BUFFER_SIZE]; /* buffer for generated content */
79#ifdef SMTP_BODYDH_USER_SIZE
80 u8_t user[SMTP_BODYDH_USER_SIZE];
81#endif /* SMTP_BODYDH_USER_SIZE */
82};
83
84enum bdh_retvals_e {
85 BDH_DONE = 0,
86 BDH_WORKING
87};
88
89/** Prototype of an smtp body callback function
90 * It receives a struct smtp_bodydh, and a buffer to write data,
91 * must return BDH_WORKING to be called again and BDH_DONE when
92 * it has finished processing. This one tries to fill one TCP buffer with
93 * data, your function will be repeatedly called until that happens; so if you
94 * know you'll be taking too long to serve your request, pause once in a while
95 * by writing length=0 to avoid hogging system resources
96 *
97 * @param arg argument specified when initiating the email
98 * @param smtp_bodydh state handling + buffer structure
99 */
100typedef int (*smtp_bodycback_fn)(void *arg, struct smtp_bodydh *bodydh);
101
102err_t smtp_send_mail_bodycback(const char *from, const char* to, const char* subject,
103 smtp_bodycback_fn bodycback_fn, smtp_result_fn callback_fn, void* callback_arg);
104
105#endif /* SMTP_BODYDH */
106
107
108err_t smtp_set_server_addr(const char* server);
109void smtp_set_server_port(u16_t port);
110#if LWIP_ALTCP && LWIP_ALTCP_TLS
111struct altcp_tls_config;
112void smtp_set_tls_config(struct altcp_tls_config *tls_config);
113#endif
114err_t smtp_set_auth(const char* username, const char* pass);
115err_t smtp_send_mail(const char *from, const char* to, const char* subject, const char* body,
116 smtp_result_fn callback_fn, void* callback_arg);
117err_t smtp_send_mail_static(const char *from, const char* to, const char* subject, const char* body,
118 smtp_result_fn callback_fn, void* callback_arg);
119void smtp_send_mail_int(void *arg);
120#ifdef LWIP_DEBUG
121const char* smtp_result_str(u8_t smtp_result);
122#endif
123
124#ifdef __cplusplus
125}
126#endif
127
128#endif /* LWIP_HDR_APPS_SMTP_H */
Note: See TracBrowser for help on using the repository browser.