aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/usage.h32
-rw-r--r--mailutils/mime.c61
2 files changed, 79 insertions, 14 deletions
diff --git a/include/usage.h b/include/usage.h
index f65406254..4e055168e 100644
--- a/include/usage.h
+++ b/include/usage.h
@@ -2541,12 +2541,17 @@
#define makemime_trivial_usage \
"[OPTIONS] [FILE]..."
#define makemime_full_usage "\n\n" \
- "Create MIME-encoded message\n" \
- "\nOptions:" \
- "\n -C Charset" \
- "\n -e Transfer encoding. Ignored. base64 is assumed" \
+ "Create multipart MIME-encoded message from FILEs.\n" \
+/* "Transfer encoding is base64, disposition is inline (not attachment)\n" */ \
+ "\nOptions:" \
+ "\n -o FILE Output. Default: stdout" \
+ "\n -a HDR Add header. Examples:" \
+ "\n \"From: user@host.org\", \"Date: `date -R`\"" \
+ "\n -c CT Content type. Default: text/plain" \
+ "\n -C CS Charset. Default: " CONFIG_FEATURE_MIME_CHARSET \
+/* "\n -e ENC Transfer encoding. Ignored. base64 is assumed" */ \
"\n" \
- "\nOther options are silently ignored." \
+ "\nOther options are silently ignored" \
#define man_trivial_usage \
"[OPTIONS] [MANPAGE]..."
@@ -3776,17 +3781,17 @@
#define selinuxenabled_full_usage ""
#define sendmail_trivial_usage \
- "[OPTIONS] [rcpt]..."
+ "[OPTIONS] [RECIPIENT_EMAIL]..."
#define sendmail_full_usage "\n\n" \
- "Send an email\n" \
+ "Read email from stdin and send it\n" \
"\nStandard options:" \
- "\n -t Read recipients from message body, add them to those on cmdline" \
- "\n -f sender Sender. REQUIRED!" \
- "\n -o options various options. -oi IMPLIED! others are IGNORED!" \
+ "\n -t Read additional recipients from message body" \
+ "\n -f sender Sender (required)" \
+ "\n -o options Various options. -oi implied, others are ignored" \
"\n" \
"\nBusybox specific options:" \
"\n -w seconds Network timeout" \
- "\n -H 'prog args' Run connection helper" \
+ "\n -H 'PROG ARGS' Run connection helper" \
"\n Examples:" \
"\n -H 'exec openssl s_client -quiet -tls1 -starttls smtp" \
"\n -connect smtp.gmail.com:25' <email.txt" \
@@ -3797,9 +3802,12 @@
"\n -S server[:port] Server" \
"\n -au<username> Username for AUTH LOGIN" \
"\n -ap<password> Password for AUTH LOGIN" \
- "\n -am<method> Authentication method. Ignored. login is implied." \
+ "\n -am<method> Authentication method. Ignored. LOGIN is implied" \
"\n" \
"\nOther options are silently ignored; -oi -t is implied" \
+ IF_MAKEMIME( \
+ "\nUse makemime applet to create message with attachments" \
+ )
#define seq_trivial_usage \
"[-w] [-s SEP] [FIRST [INC]] LAST"
diff --git a/mailutils/mime.c b/mailutils/mime.c
index d309d7f7f..358f4e903 100644
--- a/mailutils/mime.c
+++ b/mailutils/mime.c
@@ -35,12 +35,68 @@ Options:
-c auto to set Content-Type: to text/plain or
application/octet-stream based on picked encoding.
-j file1 file2 - join mime section file2 to multipart section file1.
- -o file - write ther result to file, instead of stdout (not
+ -o file - write the result to file, instead of stdout (not
allowed in child processes).
-a header - prepend an additional header to the output.
@file - read all of the above options from file, one option or
value on each line.
+ {which version of makemime is this? What do we support?}
+*/
+
+
+/* In busybox 1.15.0.svn, makemime generates output like this
+ * (empty lines are shown exactly!):
+{headers added with -a HDR}
+Mime-Version: 1.0
+Content-Type: multipart/mixed; boundary="24269534-2145583448-1655890676"
+
+--24269534-2145583448-1655890676
+Content-Type: {set by -c, e.g. text/plain}; charset={set by -C, e.g. us-ascii}
+Content-Disposition: inline; filename="A"
+Content-Transfer-Encoding: base64
+
+...file A contents...
+--24269534-2145583448-1655890676
+Content-Type: {set by -c, e.g. text/plain}; charset={set by -C, e.g. us-ascii}
+Content-Disposition: inline; filename="B"
+Content-Transfer-Encoding: base64
+
+...file B contents...
+--24269534-2145583448-1655890676--
+
+*/
+
+
+/* For reference: here is an example email to LKML which has
+ * 1st unnamed part (so it serves as an email body)
+ * and one attached file:
+...other headers...
+Content-Type: multipart/mixed; boundary="=-tOfTf3byOS0vZgxEWcX+"
+...other headers...
+Mime-Version: 1.0
+...other headers...
+
+
+--=-tOfTf3byOS0vZgxEWcX+
+Content-Type: text/plain
+Content-Transfer-Encoding: 7bit
+
+...email text...
+...email text...
+
+
+--=-tOfTf3byOS0vZgxEWcX+
+Content-Disposition: attachment; filename="xyz"
+Content-Type: text/plain; name="xyz"; charset="UTF-8"
+Content-Transfer-Encoding: 7bit
+
+...file contents...
+...file contents...
+
+--=-tOfTf3byOS0vZgxEWcX+--
+
+...random junk added by mailing list robots and such...
*/
int makemime_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
@@ -86,7 +142,8 @@ int makemime_main(int argc UNUSED_PARAM, char **argv)
// make a random string -- it will delimit message parts
srand(monotonic_us());
- boundary = xasprintf("%d-%d-%d", rand(), rand(), rand());
+ boundary = xasprintf("%u-%u-%u",
+ (unsigned)rand(), (unsigned)rand(), (unsigned)rand());
// put multipart header
printf(