imap_strout(subtype);
/* body language */
- cprintf(" NIL");
+ /* cprintf(" NIL"); We thought we needed this at one point, but maybe we don't... */
cprintf(")");
}
}
cprintf("(");
- imap_strout(cbmaintype);
+ imap_strout(cbmaintype); /* body type */
cprintf(" ");
- imap_strout(cbsubtype);
+ imap_strout(cbsubtype); /* body subtype */
cprintf(" ");
+ cprintf("("); /* begin body parameter list */
+
+ /* "NAME" must appear as the first parameter. This is not required by IMAP,
+ * but the Asterisk voicemail application blindly assumes that NAME will be in
+ * the first position. If it isn't, it rejects the message.
+ */
+ if (name != NULL) if (!IsEmptyStr(name)) {
+ cprintf("\"NAME\" ");
+ imap_strout(name);
+ cprintf(" ");
+ }
+
+ cprintf("\"CHARSET\" ");
if (cbcharset == NULL) {
- cprintf("(\"CHARSET\" \"US-ASCII\"");
+ imap_strout("US-ASCII");
}
- else if (IsEmptyStr(cbcharset)) {
- cprintf("(\"CHARSET\" \"US-ASCII\"");
+ else if (cbcharset[0] == 0) {
+ imap_strout("US-ASCII");
}
else {
- cprintf("(\"CHARSET\" ");
imap_strout(cbcharset);
}
+ cprintf(") "); /* end body parameter list */
- if (name != NULL) if (!IsEmptyStr(name)) {
- cprintf(" \"NAME\" ");
- imap_strout(name);
- }
-
- cprintf(") ");
-
- cprintf("NIL "); /* Body ID */
- cprintf("NIL "); /* Body description */
+ cprintf("NIL "); /* Body ID */
+ cprintf("NIL "); /* Body description */
- if (encoding != NULL) if (!IsEmptyStr(encoding)) have_encoding = 1;
+ if (encoding != NULL) if (encoding[0] != 0) have_encoding = 1;
if (have_encoding) {
imap_strout(encoding);
}