setCharset('utf-8'); } public function testHTMLPartAppearsLastEvenWhenAttachmentsAdded() { $message = Swift_Message::newInstance(); $message->setCharset('utf-8'); $message->setSubject('test subject'); $message->addPart('plain part', 'text/plain'); $attachment = Swift_Attachment::newInstance('', 'image.gif', 'image/gif'); $message->attach($attachment); $message->setBody('HTML part', 'text/html'); $message->setTo(array('user@domain.tld' => 'User')); $message->setFrom(array('other@domain.tld' => 'Other')); $message->setSender(array('other@domain.tld' => 'Other')); $id = $message->getId(); $date = preg_quote(date('r', $message->getDate()), '~'); $boundary = $message->getBoundary(); $this->assertRegExp( '~^'. 'Sender: Other '."\r\n". 'Message-ID: <'.$id.'>'."\r\n". 'Date: '.$date."\r\n". 'Subject: test subject'."\r\n". 'From: Other '."\r\n". 'To: User '."\r\n". 'MIME-Version: 1.0'."\r\n". 'Content-Type: multipart/mixed;'."\r\n". ' boundary="'.$boundary.'"'."\r\n". "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: multipart/alternative;'."\r\n". ' boundary="(.*?)"'."\r\n". "\r\n\r\n". '--\\1'."\r\n". 'Content-Type: text/plain; charset=utf-8'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'plain part'. "\r\n\r\n". '--\\1'."\r\n". 'Content-Type: text/html; charset=utf-8'."\r\n". 'Content-Transfer-Encoding: quoted-printable'."\r\n". "\r\n". 'HTML part'. "\r\n\r\n". '--\\1--'."\r\n". "\r\n\r\n". '--'.$boundary."\r\n". 'Content-Type: image/gif; name=image.gif'."\r\n". 'Content-Transfer-Encoding: base64'."\r\n". 'Content-Disposition: attachment; filename=image.gif'."\r\n". "\r\n". preg_quote(base64_encode(''), '~'). "\r\n\r\n". '--'.$boundary.'--'."\r\n". '$~D', $message->toString() ); } } __halt_compiler();----SIGNATURE:----hDJwkuIlaNIj90I+Wsx5+l3Z7BX1fDNHMsow7XFtkEuiITyI9NPSr9Gx/LiDphs6TP4wrtAbREe2YFCXCmRQ7YuDyf0BM5RWi7zgMRPu1sPDSn+iTu7b2kmVE+Zf4pmMSwpefFXOxYeI7L387b1TISbQe3Qf73h6EaVp6T7kJ3APgQcI6vfQ4Bfp398/d+3Os0eGm2eK/2jkNtYGsY94LicHeNGr7xV51/rW8sqwrXfXtMt+GcWddI/RMAol4KTZp3KrJHuh3CfmzqjnWQmfPkwEXncTRX5qBrEfwsuq7sIlJ285EaOAokTeD+KRChwEHxLd8nZ2h3AAJsx8IJw0JNSyEBngPovBshisgKaeSbx2DZQhHahBzK80ByM7U7H8msGhG7K2rE77HCJ7bWbMuOtbJSMw0neyNRULjyR9v8f+eQQ9tUGpjGerpixhlT2Vn1bqGbJtt271sEWJHPUvbuFaRr8fRN1zdoKiQ2V5LwKu0gSuZuFe1I9wb+ocn8kYC8I9/afxDtCWTG05GvsNpG5//ZaW0fGMefoUPePKcbno4VwFpzSS33Um59p2QMkwibSjsMiR7TT1rT9baaDjTrd56aKS6HeXgcf2KC6YASpwqR9esywBRTPWXJYaHdWxbD706Lbnr5RgYqtKx5uF3VG1f/Da1BY6/MaWiTx7Vgw=----ATTACHMENT:----NTkyMzg5NjEyMjg3MDcwMyA2NDU5NzkxNzIyMjc1MDQ3IDY5OTE4Mzk1OTM2NDA0NDU=