mailattach/include/mail.h
Tyrolyean 5814135512
Added change of header propagation
Signed-off-by: Tyrolyean <tyrolyean@tyrolyean.net>
2020-04-29 16:29:36 +02:00

68 lines
2 KiB
C

/*
* mail.h - Mail editing toolset
* The author licenses this file
* to you under the Apache License, Version 2.0 (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.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
#ifndef MAIL_H
#define MAIL_H
#include <stdint.h>
#include <stddef.h>
#include <stdbool.h>
#include <sys/types.h>
struct email_t{
char* message;
/* From the below values you can say pretty much anything about the
* message. The line delimiting body and header is left out. The header
* len includes the last \r\n of the header. If header len is zero,
* there was no clear distinction between header and body...
*/
size_t header_len, body_offset, message_length;
/* Apparently emails consist of several smaller emails if you send an
* attachment alongside them. This also happens when you send an email
* as html. Therefore emails are recursive. Ask apple, their mail client
* is basically insane by this point...
*/
bool is_multipart;
/* The boundary only needs to be defined if this is a multipart message
*/
size_t boundary_len;
char* boundary;
/* The content type tells us the MIME type of this message part. May not
* be specified, so don't assume it is here! */
size_t ct_len;
char* content_type;
size_t submes_cnt;
struct email_t** submes;
struct email_t* parent;
};
int append_header(struct email_t* mail, const char* key, const char* value);
int append_to_header(struct email_t* mail, const char* pair);
struct email_t* get_root_mail(struct email_t* mail);
void propagate_insert_delete(struct email_t* mail, char* change_p,
ssize_t change);
#define MULTIPART_MIME "multipart/"
#endif /* MAIL_H */