libcmime  
A lightweight C mime library
parse_mime_message.c
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include "../src/cmime_message.h"
#include "../src/cmime_address.h"
#include "../src/cmime_list.h"
#include "../src/cmime_string.h"
void usage() {
printf("\n");
printf("libcmime - simple api demonstration\n");
printf("-----------------------------------\n");
printf("demonstrates: parsing an email message \n");
printf("output: output is written to stdout if no output file is specified\n");
printf("required parameter: -i /path/to/input_file\n");
}
int main(int argc, char *argv[])
{
int option;
int retval = 0;
char *in_file = NULL;
int i=0;
char *s = NULL;
char *s2 = NULL;
char *msg_string = NULL;
// check command line parameters
while((option = getopt(argc,argv,"hi:")) != EOF) {
switch(option) {
case 'i':
asprintf(&in_file, "%s", optarg);
break;
case 'h':
usage();
break;
default:
usage();
}
}
if(in_file != NULL) {
// CMimeHeader_T *header = NULL;
//CMimeList_T *recipient_list = NULL;
CMimeListElem_T *elem = NULL;
CMimeAddress_T *ca = NULL;
i = cmime_message_from_file(&message,"/home/werner/libcmime/samples/m1006.txt",0);
if(i == 0) {
printf("Message summary:\n=========================================\n");
printf("Sender: [%s]\n",s);
free(s);
printf("Recipients (%d):\n",message->recipients->size);
elem = cmime_list_head(message->recipients);
while(elem != NULL) {
printf("- [%s]\n",s2);
free(s);
elem = elem->next;
}
printf("Mime Version: [%s]\n",cmime_message_get_mime_version(message));
printf("Content ID: [%s]\n",cmime_message_get_content_id(message));
printf("Content Type: [%s]\n",cmime_message_get_content_type(message));
printf("Number of message headers: [%d]\n",message->headers->size);
printf("Number of mime parts: [%d]\n",cmime_message_part_count(message));
printf("=========================================\n\n");
msg_string = cmime_message_to_string(message);
printf("%s\n",msg_string);
free(msg_string);
} else {
printf("failed opening file [%s]\n", in_file);
retval = -1;
}
} else {
printf("you have to specify an input file with -i\n");
retval = -1;
}
if(in_file != NULL)
free(in_file);
return retval;
}
cmime_message_part_count
#define cmime_message_part_count(message)
Return number of mime parts.
Definition: cmime_message.h:418
CMimeMessage_T::headers
CMimeList_T * headers
Definition: cmime_message.h:82
CMimeList_T::size
int size
Definition: cmime_list.h:56
cmime_message_get_content_id
char * cmime_message_get_content_id(CMimeMessage_T *message)
Get Content-ID header value.
Definition: cmime_message.c:635
CMimeListElem_T
An element of a CMimeList_T list.
Definition: cmime_list.h:45
cmime_message_to_string
char * cmime_message_to_string(CMimeMessage_T *message)
Return a message object as string.
Definition: cmime_message.c:816
cmime_string_strip
char * cmime_string_strip(char *s)
Strip leading/trailing spaces from string. This function doesn't allocate or reallocate any memory; i...
Definition: cmime_string.c:66
cmime_message_new
CMimeMessage_T * cmime_message_new(void)
Creates a new CMimeMessage_T object.
Definition: cmime_message.c:400
cmime_message_get_sender_string
char * cmime_message_get_sender_string(CMimeMessage_T *message)
Get sender of a CMimeMessage_T object as string.
Definition: cmime_message.c:473
cmime_message_free
void cmime_message_free(CMimeMessage_T *message)
Free a CMimeMessage_T object.
Definition: cmime_message.c:431
cmime_message_from_file
int cmime_message_from_file(CMimeMessage_T **message, const char *filename, int header_only)
Parse given file and create a CMimeMessage_T object.
Definition: cmime_message.c:724
CMimeAddress_T
Represents an email address.
Definition: cmime_address.h:57
cmime_address_to_string
char * cmime_address_to_string(CMimeAddress_T *ca)
Allocates a string containing the contents of the CMimeAddress_T object.
Definition: cmime_address.c:62
cmime_list_data
#define cmime_list_data(elem)
Definition: cmime_list.h:196
CMimeMessage_T
Represents an email message.
Definition: cmime_message.h:79
cmime_list_head
#define cmime_list_head(list)
Definition: cmime_list.h:172
cmime_message_get_mime_version
char * cmime_message_get_mime_version(CMimeMessage_T *message)
Get Mime-Version header value.
Definition: cmime_message.c:627
CMimeMessage_T::recipients
CMimeList_T * recipients
Definition: cmime_message.h:81
cmime_message_get_content_type
char * cmime_message_get_content_type(CMimeMessage_T *message)
Get Content-Type header value.
Definition: cmime_message.c:610
CMimeListElem_T::next
struct _CMimeListElem * next
Definition: cmime_list.h:48