1 /* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8; fill-column: 160 -*- */ 2 /* camelMimeMessage.h : class for a mime message 3 * 4 * Copyright (C) 1999-2008 Novell, Inc. (www.novell.com) 5 * 6 * This library is free software: you can redistribute it and/or modify it 7 * under the terms of the GNU Lesser General Public License as published by 8 * the Free Software Foundation. 9 * 10 * This library is distributed in the hope that it will be useful, but 11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License 13 * for more details. 14 * 15 * You should have received a copy of the GNU Lesser General Public License 16 * along with this library. If not, see <http://www.gnu.org/licenses/>. 17 * 18 * Authors: Bertrand Guiheneuf <bertrand@helixcode.com> 19 * Michael Zucchi <notzed@ximian.com> 20 */ 21 22 #if !defined (__CAMEL_H_INSIDE__) && !defined (CAMEL_COMPILATION) 23 #error "Only <camel/camel.h> can be included directly." 24 #endif 25 26 #ifndef CAMEL_MIME_MESSAGE_H 27 #define CAMEL_MIME_MESSAGE_H 28 29 #include <camel/camel-mime-part.h> 30 #include <camel/camel-mime-utils.h> 31 #include <camel/camel-internet-address.h> 32 #include <camel/camel-mime-filter-bestenc.h> 33 34 /* Standard GObject macros */ 35 #define CAMEL_TYPE_MIME_MESSAGE \ 36 (camel_mime_message_get_type ()) 37 #define CAMEL_MIME_MESSAGE(obj) \ 38 (G_TYPE_CHECK_INSTANCE_CAST \ 39 ((obj), CAMEL_TYPE_MIME_MESSAGE, CamelMimeMessage)) 40 #define CAMEL_MIME_MESSAGE_CLASS(cls) \ 41 (G_TYPE_CHECK_CLASS_CAST \ 42 ((cls), CAMEL_TYPE_MIME_MESSAGE, CamelMimeMessageClass)) 43 #define CAMEL_IS_MIME_MESSAGE(obj) \ 44 (G_TYPE_CHECK_INSTANCE_TYPE \ 45 ((obj), CAMEL_TYPE_MIME_MESSAGE)) 46 #define CAMEL_IS_MIME_MESSAGE_CLASS(cls) \ 47 (G_TYPE_CHECK_CLASS_TYPE \ 48 ((cls), CAMEL_TYPE_MIME_MESSAGE)) 49 #define CAMEL_MIME_MESSAGE_GET_CLASS(obj) \ 50 (G_TYPE_INSTANCE_GET_CLASS \ 51 ((obj), CAMEL_TYPE_MIME_MESSAGE, CamelMimeMessageClass)) 52 53 #define CAMEL_RECIPIENT_TYPE_TO "To" 54 #define CAMEL_RECIPIENT_TYPE_CC "Cc" 55 #define CAMEL_RECIPIENT_TYPE_BCC "Bcc" 56 57 #define CAMEL_RECIPIENT_TYPE_RESENT_TO "Resent-To" 58 #define CAMEL_RECIPIENT_TYPE_RESENT_CC "Resent-Cc" 59 #define CAMEL_RECIPIENT_TYPE_RESENT_BCC "Resent-Bcc" 60 61 /* specify local time */ 62 #define CAMEL_MESSAGE_DATE_CURRENT (~0) 63 64 G_BEGIN_DECLS 65 66 typedef struct _CamelMimeMessage CamelMimeMessage; 67 typedef struct _CamelMimeMessageClass CamelMimeMessageClass; 68 typedef struct _CamelMimeMessagePrivate CamelMimeMessagePrivate; 69 70 struct _CamelMimeMessage { 71 CamelMimePart parent; 72 CamelMimeMessagePrivate *priv; 73 }; 74 75 struct _CamelMimeMessageClass { 76 CamelMimePartClass parent_class; 77 78 /* Padding for future expansion */ 79 gpointer reserved[20]; 80 }; 81 82 GType camel_mime_message_get_type (void); 83 CamelMimeMessage * 84 camel_mime_message_new (void); 85 void camel_mime_message_set_date (CamelMimeMessage *message, 86 time_t date, 87 gint offset); 88 time_t camel_mime_message_get_date (CamelMimeMessage *message, 89 gint *offset); 90 time_t camel_mime_message_get_date_received 91 (CamelMimeMessage *message, 92 gint *offset); 93 void camel_mime_message_set_message_id 94 (CamelMimeMessage *message, 95 const gchar *message_id); 96 const gchar * camel_mime_message_get_message_id 97 (CamelMimeMessage *message); 98 void camel_mime_message_set_reply_to (CamelMimeMessage *message, 99 CamelInternetAddress *reply_to); 100 CamelInternetAddress * 101 camel_mime_message_get_reply_to (CamelMimeMessage *message); 102 void camel_mime_message_set_subject (CamelMimeMessage *message, 103 const gchar *subject); 104 const gchar * camel_mime_message_get_subject (CamelMimeMessage *message); 105 void camel_mime_message_set_from (CamelMimeMessage *message, 106 CamelInternetAddress *from); 107 CamelInternetAddress * 108 camel_mime_message_get_from (CamelMimeMessage *message); 109 CamelInternetAddress * 110 camel_mime_message_get_recipients 111 (CamelMimeMessage *message, 112 const gchar *type); 113 void camel_mime_message_set_recipients 114 (CamelMimeMessage *message, 115 const gchar *type, 116 CamelInternetAddress *recipients); 117 void camel_mime_message_set_source (CamelMimeMessage *message, 118 const gchar *source_uid); 119 const gchar * camel_mime_message_get_source (CamelMimeMessage *message); 120 121 /* utility functions */ 122 123 /** 124 * CamelForeachPartFunc: 125 * @message: a #CamelMimeMessage 126 * @part: a #CamelMimePart, for which the function is called 127 * @parent_part: (nullable): a #CamelMimePart, parent of the @part; can be %NULL 128 * @user_data: user data, as passed to camel_mime_message_foreach_part() 129 * 130 * Callback used to traverse parts of the @message using camel_mime_message_foreach_part(). 131 * 132 * Returns: %TRUE, when the traverse should continue, %FALSE to stop 133 * traversing parts of the @message 134 * 135 * Since: 3.34 136 **/ 137 typedef gboolean (* CamelForeachPartFunc) (CamelMimeMessage *message, 138 CamelMimePart *part, 139 CamelMimePart *parent_part, 140 gpointer user_data); 141 142 void camel_mime_message_foreach_part (CamelMimeMessage *message, 143 CamelForeachPartFunc callback, 144 gpointer user_data); 145 gboolean camel_mime_message_has_8bit_parts 146 (CamelMimeMessage *message); 147 void camel_mime_message_set_best_encoding 148 (CamelMimeMessage *message, 149 CamelBestencRequired required, 150 CamelBestencEncoding enctype); 151 void camel_mime_message_encode_8bit_parts 152 (CamelMimeMessage *message); 153 CamelMimePart * camel_mime_message_get_part_by_content_id 154 (CamelMimeMessage *message, 155 const gchar *content_id); 156 gchar * camel_mime_message_build_mbox_from 157 (CamelMimeMessage *message); 158 gboolean camel_mime_message_has_attachment 159 (CamelMimeMessage *message); 160 void camel_mime_message_dump (CamelMimeMessage *message, 161 gint body); 162 163 G_END_DECLS 164 165 #endif /* CAMEL_MIME_MESSAGE_H */ 166