From: Jakob Hirsch <jh@plonk.de>
To: mlmmj@mlmmj.org
Subject: Re: Fw: footer isn't appended to multipart messages (part II: reality
Date: Tue, 19 Jul 2005 22:09:22 +0000 [thread overview]
Message-ID: <42DD7A12.9010108@plonk.de> (raw)
In-Reply-To: <200507052130.02825.lists@seattleserver.com>
[-- Attachment #1: Type: text/plain, Size: 592 bytes --]
Jakob Hirsch wrote:
> To make it really reliable, I will take the easy way: Create a new MIME
> envelope with multipart/mixed for every Content-Type (not only for
done. Blatantly simple, compared with the original approach.
> We can even think about doing this with all messages, so the behaviour
> and appearance is consistent. But that should probably be controlled by
> a switch in the control directory (like "footer_always_mime").
ok, maybe later... :)
It could also be used for specifying a charset, but then an encoding
would also be needed (or we assume something, 8bit or qp).
[-- Attachment #2: mlmmj-footer-mime3.patch --]
[-- Type: text/plain, Size: 3621 bytes --]
--- mlmmj-1.2.8/src/do_all_the_voodo_here.c 2005-05-09 14:50:15.000000000 +0200
+++ mlmmj-1.2.8-jh4/src/do_all_the_voodo_here.c 2005-07-19 23:55:32.000000000 +0200
@@ -79,9 +79,12 @@
const char **delhdrs, struct mailhdr *readhdrs,
struct strlist *allhdrs, const char *prefix)
{
- char *hdrline, *subject, *unqp;
+ char *hdrline, *subject, *unqp, *buf;
int hdrsadded = 0;
int subject_present = 0;
+ char *content_type_orig = NULL; /* original Content-Type header */
+ char *content_te_orig = NULL; /* original Content-Transfer-Encoding */
+ char *boundary = NULL;
allhdrs->count = 0;
allhdrs->strs = NULL;
@@ -116,7 +119,22 @@
myfree(subject);
subject_present = 1;
}
-
+
+ /* time to add Content-Type */
+ if (content_type_orig || content_te_orig) {
+ /* create new boundary for MIME-encapsulation */
+ buf = random_str();
+ boundary = concatstr(3, "=_=", buf, "=_=");
+ myfree(buf);
+
+ /* and create new content-type header */
+ buf = concatstr(3,
+ "Content-Type: multipart/mixed; boundary=\"",
+ boundary, "\"\n");
+ writen(outfd, buf, strlen(buf));
+ myfree(buf);
+ }
+
if(writen(outfd, hdrline, strlen(hdrline))
< 0) {
myfree(hdrline);
@@ -159,7 +177,25 @@
myfree(unqp);
}
}
-
+
+ if (footfd>=0) {
+ /* save MIME header for later use */
+ if (!strncasecmp(hdrline, "Content-Type:", 13)) {
+ if (!content_type_orig)
+ content_type_orig = hdrline;
+ else
+ myfree(hdrline); /* drop surplus */
+ continue;
+ } else if (!strncasecmp(hdrline,
+ "Content-Transfer-Encoding:", 26)) {
+ if (!content_te_orig)
+ content_te_orig = hdrline;
+ else
+ myfree(hdrline); /* drop surplus */
+ continue;
+ }
+ }
+
/* Should it be stripped? */
if(delhdrs) {
if(!findit(hdrline, delhdrs))
@@ -170,20 +206,64 @@
myfree(hdrline);
}
+
+ if (content_type_orig || content_te_orig) {
- /* Just print the rest of the mail */
- if(dumpfd2fd(infd, outfd) < 0) {
- log_error(LOG_ARGS, "Error when dumping rest of mail");
- return -1;
- }
+ buf = concatstr(3,
+ "This is a multi-part message in MIME format.\n\n--",
+ boundary, "\n");
+ writen(outfd, buf, strlen(buf));
+ myfree(buf);
+
+ if (content_type_orig) {
+ writen(outfd, content_type_orig, strlen(content_type_orig));
+ myfree(content_type_orig);
+ }
+
+ if (content_te_orig) {
+ writen(outfd, content_te_orig, strlen(content_te_orig));
+ myfree(content_te_orig);
+ }
+
+ writen(outfd, "\n", 1);
- /* No more, lets add the footer if one */
- if(footfd >= 0)
+ /* Just print the rest of the mail */
+ if(dumpfd2fd(infd, outfd) < 0) {
+ log_error(LOG_ARGS, "Error when dumping rest of mail");
+ return -1;
+ }
+
+ buf = concatstr(3, "\n--", boundary,
+ "\nContent-Type: text/plain\nContent-Disposition: inline\n\n");
+ writen(outfd, buf, strlen(buf));
+ myfree(buf);
+
+ /* No more, lets add the footer if one */
if(dumpfd2fd(footfd, outfd) < 0) {
log_error(LOG_ARGS, "Error when adding footer");
return -1;
}
+ buf = concatstr(3, "\n--", boundary, "--\n");
+ myfree(boundary);
+ writen(outfd, buf, strlen(buf));
+ myfree(buf);
+
+ } else {
+ /* Just print the rest of the mail */
+ if(dumpfd2fd(infd, outfd) < 0) {
+ log_error(LOG_ARGS, "Error when dumping rest of mail");
+ return -1;
+ }
+
+ /* No more, lets add the footer if one */
+ if(footfd >= 0)
+ if(dumpfd2fd(footfd, outfd) < 0) {
+ log_error(LOG_ARGS, "Error when adding footer");
+ return -1;
+ }
+ }
+
fsync(outfd);
return 0;
next prev parent reply other threads:[~2005-07-19 22:09 UTC|newest]
Thread overview: 35+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-05 21:30 footer isn't appended to multipart messages Casey Allen Shobe
2005-07-05 22:09 ` Sven 'Darkman' Michels
2005-07-05 23:32 ` footer isn't appended to multipart messages (part II: reality check!) Patrick Bennett
2005-07-06 2:38 ` Casey Allen Shobe
2005-07-06 6:17 ` Fw: " Patrick Bennett
2005-07-06 8:05 ` footer isn't appended to multipart messages Mads Martin Joergensen
2005-07-06 8:12 ` footer isn't appended to multipart messages (part II: reality check!) Mads Martin Joergensen
2005-07-06 8:15 ` Mads Martin Joergensen
2005-07-06 13:00 ` Fw: " Morten K. Poulsen
2005-07-07 15:31 ` Fw: footer isn't appended to multipart messages (part II: reality Jakob Hirsch
2005-07-07 16:07 ` Fw: footer isn't appended to multipart messages (part II: reality check!) Mads Martin Joergensen
2005-07-09 18:10 ` Fw: footer isn't appended to multipart messages (part II: reality Jakob Hirsch
2005-07-15 14:29 ` Fw: footer isn't appended to multipart messages (part II: reality check!) Mads Martin Joergensen
2005-07-16 13:12 ` Fw: footer isn't appended to multipart messages (part II: reality Jakob Hirsch
2005-07-16 14:52 ` Fw: footer isn't appended to multipart messages (part II: reality check!) Mads Martin Joergensen
2005-07-18 9:49 ` Fw: footer isn't appended to multipart messages (part II: reality Jakob Hirsch
2005-07-18 18:12 ` Fw: footer isn't appended to multipart messages (part II: reality check!) Mads Martin Joergensen
2005-07-18 23:26 ` Fw: footer isn't appended to multipart messages (part II: reality Jakob Hirsch
2005-07-19 7:25 ` Fw: footer isn't appended to multipart messages (part II: reality check!) Mads Martin Joergensen
2005-07-19 7:59 ` Fw: footer isn't appended to multipart messages (part II: reality Jakob Hirsch
2005-07-19 8:05 ` Fw: footer isn't appended to multipart messages (part II: reality check!) Mads Martin Joergensen
2005-07-19 18:44 ` Fw: footer isn't appended to multipart messages (part II: reality Jakob Hirsch
2005-07-19 22:09 ` Jakob Hirsch [this message]
2005-07-20 6:18 ` Fw: footer isn't appended to multipart messages (part II: reality check!) Mads Martin Joergensen
2005-10-10 5:28 ` Mads Martin Joergensen
2005-10-10 21:41 ` Fw: footer isn't appended to multipart messages (part II: reality Jakob Hirsch
2005-10-10 21:47 ` Fw: footer isn't appended to multipart messages (part II: reality check!) Neale Pickett
2005-10-10 22:08 ` Fw: footer isn't appended to multipart messages (part II: reality Jakob Hirsch
2005-10-11 0:15 ` Fw: footer isn't appended to multipart messages (part II: reality check!) Mads Martin Joergensen
2005-10-11 3:06 ` Neale Pickett
2005-10-11 7:52 ` Fw: footer isn't appended to multipart messages (part II: Jakob Hirsch
2005-10-11 8:52 ` Fw: footer isn't appended to multipart messages (part II: reality check!) Mads Martin Joergensen
2005-10-11 9:30 ` Fw: footer isn't appended to multipart messages (part II: Jakob Hirsch
2005-10-11 12:24 ` Fw: footer isn't appended to multipart messages (part II: reality check!) Mads Martin Joergensen
2005-10-11 12:55 ` Neale Pickett
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=42DD7A12.9010108@plonk.de \
--to=jh@plonk.de \
--cc=mlmmj@mlmmj.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.