--- /dev/null
+--TEST--
+Bug #31142 test #1 (imap_mail_compose() generates incorrect output)
+--SKIPIF--
+<?php
+ if (!extension_loaded("imap")) {
+ die("skip imap extension not available");
+ }
+?>
+--FILE--
+<?php
+
+$envelope["from"]= "joe@example.com";
+$envelope["to"] = "foo@example.com";
+$envelope["cc"] = "bar@example.com";
+
+$part1["type"] = TYPEMULTIPART;
+$part1["subtype"] = "mixed";
+
+$part2["type"] = TYPEAPPLICATION;
+$part2["encoding"] = ENCBINARY;
+$part2["subtype"] = "octet-stream";
+$part2["description"] = "some file";
+$part2["contents.data"] = "ABC";
+
+$part3["type"] = TYPETEXT;
+$part3["subtype"] = "plain";
+$part3["description"] = "description3";
+$part3["contents.data"] = "contents.data3\n\n\n\t";
+
+$body[1] = $part1;
+$body[2] = $part2;
+$body[3] = $part3;
+
+echo imap_mail_compose($envelope, $body);
+
+?>
+--EXPECTF--
+From: joe@example.com
+To: foo@example.com
+cc: bar@example.com
+MIME-Version: 1.0
+Content-Type: MULTIPART/mixed; BOUNDARY="%s"
+
+---%s
+Content-Type: APPLICATION/octet-stream
+Content-Transfer-Encoding: BASE64
+Content-Description: some file
+
+QUJD
+
+---%s
+Content-Type: TEXT/plain; CHARSET=US-ASCII
+Content-Description: description3
+
+contents.data3
+
+
+
+---%s--
\ No newline at end of file
--- /dev/null
+--TEST--
+Bug #31142 test #2 (imap_mail_compose() generates incorrect output)
+--SKIPIF--
+<?php
+ if (!extension_loaded("imap")) {
+ die("skip imap extension not available");
+ }
+?>
+--FILE--
+<?php
+$envelope["from"]= 'host@domain.com';
+$envelope["return_path"]= 'host@domain.com';
+
+$part1["type"]=TYPETEXT;
+$part1["subtype"]="plain";
+$part1["encoding"]=ENCQUOTEDPRINTABLE ;
+$part1["charset"]='iso-8859-2';
+$part1["contents.data"]=imap_8bit('asn řkl');
+
+$body = array($part1);
+
+echo imap_mail_compose($envelope, $body);
+?>
+--EXPECT--
+From: host@domain.com
+MIME-Version: 1.0
+Content-Type: TEXT/plain; CHARSET=iso-8859-2
+Content-Transfer-Encoding: QUOTED-PRINTABLE
+
+asn =C5=99kl
\ No newline at end of file