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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox