Changeset 1354

Show
Ignore:
Timestamp:
12/26/06 20:46:39
Author:
pvanhoof
Message:

Bugfixes in the creation of messages

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/libtinymail-camel/tny-camel-mime-part.c

    r1341 r1354  
    131131        CamelMedium *medium; 
    132132        CamelDataWrapper *containee; 
     133        CamelMultipart *body; 
    133134        gint curl = 0, retval = 0; 
    134135        CamelMimePart *cpart; 
     
    148149        if (G_UNLIKELY (!containee) || G_LIKELY (!CAMEL_IS_MULTIPART (containee))) 
    149150        { 
    150                 /* TODO: restore original mime part? */ 
    151                 if (G_LIKELY (containee)) 
     151                if (containee) 
    152152                        camel_object_unref (CAMEL_OBJECT (containee)); 
    153153 
    154154                curl = 0; 
    155  
    156                 containee = (CamelDataWrapper*)camel_multipart_new (); 
    157                 camel_multipart_set_boundary ((CamelMultipart*)containee, NULL); 
    158                 camel_medium_set_content_object (medium, containee); 
    159         } 
     155                body = camel_multipart_new (); 
     156                camel_data_wrapper_set_mime_type (CAMEL_DATA_WRAPPER (body), 
     157                                                "multipart/alternative"); 
     158                camel_multipart_set_boundary (body, NULL); 
     159                camel_medium_set_content_object (medium, CAMEL_DATA_WRAPPER (body)); 
     160        } else 
     161                body = CAMEL_MULTIPART (containee); 
    160162 
    161163        cpart = tny_camel_mime_part_get_part (TNY_CAMEL_MIME_PART (part)); 
    162         camel_multipart_add_part ((CamelMultipart*)containee, cpart); 
     164        camel_multipart_add_part (body, cpart); 
    163165        camel_object_unref (CAMEL_OBJECT (cpart)); 
    164166 
    165         retval = camel_multipart_get_number ((CamelMultipart*)containee); 
    166  
    167         /* Warning: large lock that locks code, not data */ 
     167        retval = camel_multipart_get_number (body); 
     168 
    168169        g_mutex_unlock (priv->part_lock); 
    169170 
     
    197198        containee = camel_medium_get_content_object (CAMEL_MEDIUM (priv->part)); 
    198199 
    199         cpart = tny_camel_mime_part_get_part (TNY_CAMEL_MIME_PART (part)); 
    200         camel_multipart_remove_part (CAMEL_MULTIPART (containee), cpart); 
    201         camel_object_unref (CAMEL_OBJECT (cpart)); 
    202  
    203         /* Warning: large lock that locks code, not data */ 
     200        if (containee && CAMEL_IS_MULTIPART (containee)) 
     201        { 
     202                cpart = tny_camel_mime_part_get_part (TNY_CAMEL_MIME_PART (part)); 
     203                camel_multipart_remove_part (CAMEL_MULTIPART (containee), cpart); 
     204                camel_object_unref (CAMEL_OBJECT (cpart)); 
     205        } 
     206 
    204207        g_mutex_unlock (priv->part_lock); 
    205208 
     
    384387 
    385388        camel_object_unref (CAMEL_OBJECT (cstream)); 
    386  
    387         /* We are done, so unreference the reference above */ 
    388389        camel_object_unref (CAMEL_OBJECT (medium)); 
    389390 
     
    427428 
    428429        camel_object_unref (CAMEL_OBJECT (cstream)); 
    429  
    430430        camel_object_unref (CAMEL_OBJECT (medium)); 
    431431 
     
    751751        TnyCamelMimePartPriv *priv = TNY_CAMEL_MIME_PART_GET_PRIVATE (self); 
    752752 
     753        g_assert (CAMEL_IS_MEDIUM (priv->part)); 
     754 
    753755        g_mutex_lock (priv->part_lock); 
    754756 
    755757        camel_mime_part_set_content_type (priv->part, content_type); 
     758 
    756759        if (G_UNLIKELY (priv->cached_content_type)) 
    757760                g_free (priv->cached_content_type); 
  • trunk/libtinymail-camel/tny-camel-msg.c

    r1349 r1354  
    4848        (G_TYPE_INSTANCE_GET_PRIVATE ((o), TNY_TYPE_CAMEL_MSG, TnyCamelMsgPriv)) 
    4949 
     50/* 
     51        new = ppriv->part  
     52        camel_medium_add_header (CAMEL_MEDIUM (new), "Disposition-Notification-To", mdn_address); 
     53        camel_medium_add_header (CAMEL_MEDIUM (new), "X-Priority", "1"); 
     54*/ 
    5055 
    5156CamelMimeMessage*  
     
    223228 
    224229 
     230 
    225231static void 
    226232tny_camel_msg_finalize (GObject *object) 
  • trunk/tests/functional/msg-sender.c

    r1353 r1354  
    6868 
    6969#define TEST_STRING "This is a test E-mail" 
     70#define HTML_PRE "<html><body><b>" 
     71#define HTML_POST "</b></body></html>" 
    7072 
    7173static TnyMsg* 
     
    7375{ 
    7476        TnyMsg *retval = tny_platform_factory_new_msg (platfact); 
    75         TnyStream *stream = tny_camel_mem_stream_new (); 
    7677        TnyHeader *header = tny_platform_factory_new_header (platfact); 
     78 
     79        TnyStream *plain_stream = tny_camel_mem_stream_new (); 
     80        TnyStream *html_stream = tny_camel_mem_stream_new (); 
     81        TnyMimePart *plain_body = tny_platform_factory_new_mime_part (platfact); 
     82        TnyMimePart *html_body = tny_platform_factory_new_mime_part (platfact); 
    7783 
    7884        tny_header_set_subject (header, TEST_STRING); 
     
    8187 
    8288        tny_msg_set_header (retval, header); 
     89        g_object_unref (G_OBJECT (header)); 
    8390 
    84         tny_stream_write (stream, TEST_STRING, strlen (TEST_STRING)); 
    85         tny_stream_reset (stream); 
     91        tny_stream_write (plain_stream, TEST_STRING, strlen (TEST_STRING)); 
     92        tny_stream_reset (plain_stream); 
    8693 
    87         tny_mime_part_construct_from_stream (TNY_MIME_PART (retval), stream, "text/plain");  
     94        tny_stream_write (html_stream, HTML_PRE TEST_STRING HTML_POST,  
     95                strlen (HTML_PRE TEST_STRING HTML_POST)); 
     96        tny_stream_reset (html_stream); 
    8897 
    89         g_object_unref (G_OBJECT (stream)); 
     98        tny_mime_part_construct_from_stream (plain_body, plain_stream, "text/plain; charset=utf-8");  
     99        tny_mime_part_construct_from_stream (html_body, html_stream, "text/html; charset=utf-8");  
     100 
     101        tny_mime_part_add_part (TNY_MIME_PART (retval), html_body); 
     102        tny_mime_part_add_part (TNY_MIME_PART (retval), plain_body); 
     103 
     104        g_object_unref (G_OBJECT (plain_stream)); 
     105        g_object_unref (G_OBJECT (html_stream)); 
     106 
     107        g_object_unref (G_OBJECT (plain_body)); 
     108        g_object_unref (G_OBJECT (html_body)); 
    90109 
    91110        return retval;