blob: 69ee7549da2e2e0a45ea9c454624d5cdd2fa004f (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
Mailbox Saving
==============
Both saving and copying messages begins by calling 'mailbox_save_alloc()'.
After that you can set message's metadata fields:
* 'mailbox_save_set_flags()' sets flags and keywords.
* 'mailbox_save_set_received_date()' sets message's received date (IMAP
INTERNALDATE). It also supports specifying timezone, but most backends don't
support saving it.
* 'mailbox_save_set_dest_mail()' specifies a mail that can be used to access
the partially saved mail after save/copy is finished (but not committed).
You should be able to do pretty much anything with the mail, but its UID is
usually 0 at this point.
* 'mailbox_save_set_from_envelope()' sets the envelope sender. Currently this
is only used by mbox format to specify the address in From_-line.
When copying, most of the metadata fields are automatically copied from the
source message. The only exception is message's flags and keywords. If you want
to preserve them, the easiest way is to call 'mailbox_save_copy_flags()'.
Some metadata fields are mainly useful when you're replicating or restoring an
existing mailbox and want to preserve metadata:
* 'mailbox_save_set_min_modseq()' sets message's modseq to at least the
specified modseq. If the modseqs are already higher in the mailbox, the
resulting modseq is what it would have been without this call.
* 'mailbox_save_set_uid()' sets message's UID. If mailbox's next_uid is
already higher than the specified UID, the UID request is ignored.
* 'mailbox_save_set_guid()' sets message's globally unique ID. A new GUID is
generated by default, and if there already exists a message with the same
GUID a different one may or may not be given. For example with maildir the
GUID is same as the base filename, while dbox has an explicit GUID metadata
field.
* 'mailbox_save_set_pop3_uidl()' sets POP3 UIDL value. Not all backends
support this.
* 'mailbox_save_set_save_date()' sets "message saved" date, i.e. the date/time
when the message was saved to this mailbox. The default is the current time.
Once you're done with setting the metadata fields, you can either copy an
existing mail with 'mailbox_copy()' or provide message body with:
* 'mailbox_save_begin()' starts saving from given input stream.
* 'mailbox_save_continue()' saves all data from input stream. If input stream
is blocking, typically a single call to this function should be enough. If
input stream is non-blocking, you need to call this function until you're
done. In any case call this until 'i_stream_is_eof()' returns TRUE.
* 'mailbox_save_finish()' finishes saving the mail, or 'mailbox_save_cancel()'
aborts it.
(This file was created from the wiki on 2019-06-19 12:42)
|