ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/svn/vendor/ircservices-5.1.24/modules/mail/mail-local.h
Revision: 3389
Committed: Fri Apr 25 14:12:15 2014 UTC (11 years, 4 months ago) by michael
Content type: text/x-chdr
File size: 2759 byte(s)
Log Message:
- Imported ircservices-5.1.24

File Contents

# Content
1 /* Internal mail system declarations.
2 *
3 * IRC Services is copyright (c) 1996-2009 Andrew Church.
4 * E-mail: <achurch@achurch.org>
5 * Parts written by Andrew Kempe and others.
6 * This program is free but copyrighted software; see the file GPL.txt for
7 * details.
8 */
9
10 #ifndef MAIL_LOCAL_H
11 #define MAIL_LOCAL_H
12
13 #ifndef TIMEOUT_H
14 # include "timeout.h"
15 #endif
16
17 /*************************************************************************/
18
19 /* Structure describing a message to be sent. */
20
21 typedef struct mailmessage_struct MailMessage;
22 struct mailmessage_struct {
23 MailMessage *next, *prev;
24 char *from;
25 char *fromname;
26 char *to;
27 char *subject;
28 char *body;
29 char *charset;
30 MailCallback completion_callback;
31 void *callback_data;
32 Timeout *timeout;
33 };
34
35 /*************************************************************************/
36
37 /* Pointer to low-level send routine. Low-level modules should set this
38 * to point to their own send routine. This routine should initiate mail
39 * sending, then call send_finished() with an appropriate status code when
40 * the sending completes (successfully or otherwise).
41 *
42 * The routine can assume that the `from', `to', `subject', and `body'
43 * fields of the message will be non-NULL.
44 *
45 * The routine can do as it likes with the message data stored in the
46 * message structure (`from', `fromname', `to', `subject', and `body'),
47 * but the (pointer) values of the fields themselves should not be changed.
48 */
49 extern void (*low_send)(MailMessage *msg);
50
51 /* Pointer to low-level abort routine. Low-level modules should set this
52 * to point to their own abort routine. This routine will be called when
53 * the high-level code needs to abort a message (for example, on a send
54 * timeout); the routine MUST abort sending of the given message.
55 * send_finished() should not be called, as the high-level code will take
56 * care of that.
57 *
58 * For modules which always complete processing before returning from
59 * low_send(), this will never be called, so it may be an empty routine;
60 * however, the `low_abort' pointer must be set or sendmail() will report
61 * that no low-level sending module is installed.
62 */
63 extern void (*low_abort)(MailMessage *msg);
64
65 /* Routine to be called by low_send() when the given message has been sent
66 * (or sending has failed). The message structure must not be accessed
67 * after calling this routine!
68 */
69 extern void send_finished(MailMessage *msg, int status);
70
71 /*************************************************************************/
72
73 #endif /* MAIL_H */
74
75 /*
76 * Local variables:
77 * c-file-style: "stroustrup"
78 * c-file-offsets: ((case-label . *) (statement-case-intro . *))
79 * indent-tabs-mode: nil
80 * End:
81 *
82 * vim: expandtab shiftwidth=4:
83 */