Re: line breaks in text attachments
"DINH Viêt Hoà" <[email protected]> Sat, 10 Nov 2007 11:48:49 +0100
| Newsgroups | gmane.mail.libetpan.user |
|---|---|
| Message-ID | <[email protected]> |
On 11/10/07, Stanislaw T. Findeisen <[email protected]> wrote: > Hello > > I am experiencing problems with line breaks in text attachments. I wrote > a sample program to demonstrate this problem: > > ========================================================= > /** > * Based on compose-msg.c > */ > > #include <stdlib.h> > #include <string.h> > > #include <libetpan/libetpan.h> > > struct mailimf_fields * build_fields() { > const char * subject = "line breaks"; > > struct mailimf_mailbox_list * from = mailimf_mailbox_list_new_empty(); > struct mailimf_address_list * to = mailimf_address_list_new_empty(); > > mailimf_mailbox_list_add_parse(from, "DINH Viet Hoa > <[email protected]>"); > mailimf_address_list_add_parse(to, "Paul <claws-0/[email protected]>"); > > struct mailimf_fields * new_fields = mailimf_fields_new_with_data(from, > NULL, NULL, to, NULL, NULL, NULL, NULL, strdup(subject)); > return new_fields; > } > > int main(int argc, char ** argv) { > const char * attachmentFilename = "file-1.txt"; > const char * sampleText1 = "ab\ncd"; > const char * sampleText1Charset = "iso-8859-1"; > const int sampleText1Length = strlen(sampleText1); > > printf("Sample text length is: %d\n", sampleText1Length); > printf("Sample text is: %s\n", sampleText1); > > // start the message > struct mailimf_fields * fields = build_fields(); > struct mailmime * message = mailmime_new_message_data(NULL); > mailmime_set_imf_fields(message, fields); > > // build attachment > struct mailmime_fields * mime_fields = > mailmime_fields_new_filename(MAILMIME_DISPOSITION_TYPE_ATTACHMENT, > strdup(attachmentFilename), MAILMIME_MECHANISM_QUOTED_PRINTABLE); > struct mailmime_content * mime_content = > mailmime_content_new_with_str("text/plain"); > struct mailmime_parameter * mime_param = > mailmime_param_new_with_data("charset", strdup(sampleText1Charset)); > clist_append(mime_content->ct_parameters, mime_param); > > struct mailmime * mime_sub = mailmime_new_empty(mime_content, > mime_fields); > mailmime_set_body_text(mime_sub, strdup(sampleText1), > sampleText1Length); > > // add attachment to the message > mailmime_smart_add_part(message, mime_sub); > > // write the message out > printf("==== Printing the message:\n\n"); > int col = 0; > mailmime_write(stdout, &col, message); > mailmime_free(message); > printf("#DONE\n"); > > return 0; > } > ========================================================= > > The output of this program on my computer is: > > ========================================================= > Sample text length is: 5 > Sample text is: ab > cd > ==== Printing the message: > > Date: Sat, 10 Nov 2007 10:57:56 +0100 > From: DINH Viet Hoa <[email protected]> > To: Paul <claws-0/[email protected]> > Message-ID: <etPan.473580a4.6b8b4567.2ecb@thinkpad> > Subject: line breaks > MIME-Version: 1.0 > Content-Type: text/plain; charset="iso-8859-1" > Content-Transfer-Encoding: quoted-printable > Content-Disposition: attachment; filename="file-1.txt" > > ab > #DONE > ========================================================= > > It seems that the last line is cut out. > > When using "sample text\nwith\nseveral\nlines." as a sample text, the > last line is being cut also. > > With different encodings like utf-8 the problem was the same. > > Am I doing anything wrong, or is this a bug? Hello, This is obviously a bug. I analyzed it and last line was flushed only if there was an ending '\n' in the text (in quoted-printable generation). You can either update using the CVS or workaround the bug by adding an ending '\n'. Thanks for reporting, -- DINH Viêt Hoà ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/