MODULE = MIME::Fast PACKAGE = MIME::Fast::Message PREFIX=g_mime_message_
# new(pretty_headers)
MIME::Fast::Message
g_mime_message_new(Class, pretty_headers = FALSE)
char * Class
gboolean pretty_headers
CODE:
RETVAL = g_mime_message_new(pretty_headers);
if (gmime_debug)
warn("g_mime_message_NEW: 0x%x\n", RETVAL);
plist = g_list_prepend(plist, RETVAL);
OUTPUT:
RETVAL
# destroy(message)
void
DESTROY(message)
MIME::Fast::Message message
CODE:
if (gmime_debug)
warn("g_mime_message_DESTROY: 0x%x %s", message,
g_list_find(plist,message) ? "(true destroy)" : "(only attempt)");
if (g_list_find(plist,message)) {
g_mime_object_unref (GMIME_OBJECT (message));
plist = g_list_remove(plist, message);
}
# recipient
void
g_mime_message_add_recipient(message, type, name, address)
MIME::Fast::Message message
char * type
const char * name
const char * address
void
g_mime_message_add_recipients_from_string(message, type, recipients)
MIME::Fast::Message message
char * type
const char * recipients
AV *
g_mime_message_get_recipients(message, type)
MIME::Fast::Message message
const char * type
PREINIT:
InternetAddressList * rcpt;
AV * retav;
CODE:
retav = newAV();
rcpt = g_mime_message_get_recipients(message, type);
while (rcpt) {
SV * address = newSViv(0);
sv_setref_pv(address, "MIME::Fast::InternetAddress", (MIME__Fast__InternetAddress)(rcpt->address));
av_push(retav, address);
rcpt = rcpt->next;
}
RETVAL = retav;
OUTPUT:
RETVAL
void
interface_m_set(message, value)
MIME::Fast::Message message
char * value
INTERFACE_MACRO:
XSINTERFACE_FUNC
XSINTERFACE_FUNC_MIMEFAST_MESSAGE_SET
INTERFACE:
set_subject
set_message_id
set_reply_to
set_sender
const char *
interface_m_get(message)
MIME::Fast::Message message
INTERFACE_MACRO:
XSINTERFACE_FUNC
XSINTERFACE_FUNC_MIMEFAST_MESSAGE_SET
INTERFACE:
get_subject
get_message_id
get_reply_to
get_sender
# date
void
g_mime_message_set_date(message, date, gmt_offset)
MIME::Fast::Message message
time_t date
int gmt_offset
void
g_mime_message_set_date_from_string(message, str)
MIME::Fast::Message message
const char * str
PREINIT:
time_t date;
int offset = 0;
CODE:
date = g_mime_utils_header_decode_date (str, &offset);
g_mime_message_set_date (message, date, offset);
#
# returns scalar string or array (date, gmt_offset)
#
void
g_mime_message_get_date(message)
MIME::Fast::Message message
PREINIT:
time_t date;
int gmt_offset;
I32 gimme = GIMME_V;
char * str;
PPCODE:
if (gimme == G_SCALAR) {
str = g_mime_message_get_date_string(message);
if (str) {
XPUSHs(sv_2mortal(newSVpv(str,0)));
g_free (str);
}
} else if (gimme == G_ARRAY) {
g_mime_message_get_date(message, &date, &gmt_offset);
XPUSHs(sv_2mortal(newSVnv(date)));
XPUSHs(sv_2mortal(newSViv(gmt_offset)));
}
# the other headers
void
g_mime_message_set_header(message, field, value)
MIME::Fast::Message message
const char * field
const char * value
CODE:
g_mime_message_set_header(message, field, value);
// message_set_header(message, field, value);
void
g_mime_message_remove_header(message, field)
MIME::Fast::Message message
const char * field
CODE:
g_mime_object_remove_header(GMIME_OBJECT (message), field);
# add arbitrary header
void
g_mime_message_add_header(message, field, value)
MIME::Fast::Message message
const char * field
const char * value
# CODE:
# message_set_header(message, field, value);
const char *
g_mime_message_get_header(message, field)
MIME::Fast::Message message
const char * field
# mime_part
void
g_mime_message_set_mime_part(message, mime_part)
MIME::Fast::Message message
MIME::Fast::Object mime_part
CODE:
g_mime_message_set_mime_part(message, GMIME_OBJECT (mime_part));
plist = g_list_remove(plist, mime_part);
## UTILITY FUNCTIONS
SV *
g_mime_message_get_body(message, want_plain = 1, is_html = 0)
CASE: items == 1
MIME::Fast::Message message
PREINIT:
gboolean want_plain = 1;
gboolean is_html;
char * textdata;
CODE:
textdata = g_mime_message_get_body(message, want_plain, &is_html);
if (textdata == NULL)
XSRETURN_UNDEF;
RETVAL = newSVpv(textdata, 0);
g_free (textdata);
OUTPUT:
RETVAL
CASE: items == 2
MIME::Fast::Message message
gboolean want_plain
PREINIT:
gboolean is_html;
char * textdata;
CODE:
textdata = g_mime_message_get_body(message, want_plain, &is_html);
if (textdata == NULL)
XSRETURN_UNDEF;
RETVAL = newSVpv(textdata, 0);
g_free (textdata);
OUTPUT:
RETVAL
CASE: items == 3
MIME::Fast::Message message
gboolean want_plain
gboolean &is_html
PREINIT:
char * textdata;
CODE:
textdata = g_mime_message_get_body(message, want_plain, &is_html);
if (textdata == NULL)
XSRETURN_UNDEF;
RETVAL = newSVpv(textdata, 0);
g_free (textdata);
OUTPUT:
is_html
RETVAL
SV *
g_mime_message_get_headers(message)
MIME::Fast::Message message
PREINIT:
char * textdata;
CODE:
textdata = g_mime_message_get_headers(message);
if (textdata == NULL)
XSRETURN_UNDEF;
RETVAL = newSVpv(textdata, 0);
g_free (textdata);
OUTPUT:
RETVAL
# callback function
void
g_mime_message_foreach_part(message, callback, svdata)
MIME::Fast::Message message
SV * callback
SV * svdata
PREINIT:
struct _user_data_sv *data;
CODE:
data = g_new0 (struct _user_data_sv, 1);
data->svuser_data = newSVsv(svdata);
data->svfunc = newSVsv(callback);
g_mime_message_foreach_part(message, call_sub_foreach, data);
g_free (data);
## "OBJECTS" FUNCTION
# returns Part or MultiPart
SV *
get_mime_part(message)
MIME::Fast::Message message
PREINIT:
GMimeObject * mime_object;
CODE:
if (message->mime_part != NULL) {
RETVAL = newSViv(4);
mime_object = GMIME_OBJECT(message->mime_part);
if (GMIME_IS_MULTIPART(mime_object))
sv_setref_pv(RETVAL, "MIME::Fast::MultiPart", (MIME__Fast__MultiPart)mime_object);
else if (GMIME_IS_MESSAGE_PARTIAL(mime_object))
sv_setref_pv(RETVAL, "MIME::Fast::MessagePartial", (MIME__Fast__MessagePartial)mime_object);
#if GMIME_CHECK_VERSION_UNSUPPORTED
else if (GMIME_IS_MESSAGE_MDN(mime_object))
sv_setref_pv(RETVAL, "MIME::Fast::MessageMDN", (MIME__Fast__MessageMDN)mime_object);
else if (GMIME_IS_MESSAGE_DELIVERY(mime_object))
sv_setref_pv(RETVAL, "MIME::Fast::MessageDelivery", (MIME__Fast__MessageDelivery)mime_object);
#endif
else if (GMIME_IS_PART(mime_object))
sv_setref_pv(RETVAL, "MIME::Fast::Part", (MIME__Fast__Part)mime_object);
else if (GMIME_IS_MESSAGE_PART(mime_object))
sv_setref_pv(RETVAL, "MIME::Fast::MessagePart", (MIME__Fast__MessagePart)mime_object);
else
die("get_mime_part: unknown type of object: 0x%x", mime_object);
plist = g_list_prepend(plist, RETVAL);
g_mime_object_ref( mime_object );
if (gmime_debug)
warn("function message->mime_part returns (not in plist): 0x%x", RETVAL);
} else {
RETVAL = &PL_sv_undef;
}
OUTPUT:
RETVAL