This repository was archived by the owner on Jan 30, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 108
This repository was archived by the owner on Jan 30, 2020. It is now read-only.
Headers encoding / decoding is not always used when needed #15
Copy link
Copy link
Open
Labels
Milestone
Description
Here's the code that explain this issue:
$rawMessage = "Subject: =?UTF-8?Q?Non=20=E2=80=9Cascii=E2=80=9D=20characters=20like=20accented=20?=\r\n"
." =?UTF-8?Q?vowels=20=C3=B2=C3=A0=C3=B9=C3=A8=C3=A9=C3=AC?=";
$mail = \Zend\Mail\Message::fromString($rawMessage);
echo "Using Message::fromString() - ERROR (?): Subject is not mime encoded!\n";
echo $mail->toString();
unset($mail);
$mail = new \Zend\Mail\Message();
$mail->setSubject("Non “ascii” characters like accented vowels òàùèéì");
echo "Using Message::setSubject() - OK: Subject is correctly encoded!\n";
echo $mail->toString();
unset($mail);
$mail = new \Zend\Mail\Message();
$header = new \Zend\Mail\Header\GenericHeader('X-Test', 'Non “ascii” characters like accented vowels òàùèéì');
$mail->getHeaders()->addHeader($header);
echo "Using Message::getHeaders()::addHeader() - OK: Header is correctly encoded!\n";
echo $mail->toString();
unset($mail);
$mail = new \Zend\Mail\Message();
$header = new \Zend\Mail\Header\GenericHeader('X-Test', 'Non “ascii” characters like accented vowels òàùèéì');
$headers = new \Zend\Mail\Headers();
$headers->addHeader($header);
$mail->setHeaders($headers);
echo "Using Message::setHeaders(Headers \$headers) - ERROR: Throws Exception!\n";
try {
echo $mail->toString();
} catch (\Exception $e) {
echo 'EXCEPTION: ' . $e->getMessage();
echo "\n\n";
}
unset($mail);
echo "Using Header::fromString() - OK Header is correctly encoded!\n";
$mail = new \Zend\Mail\Message();
$str = "X-Test-2: =?UTF-8?Q?Non=20=E2=80=9Cascii=E2=80=9D=20characters=20like=20accented=20?=\r\n"
." =?UTF-8?Q?vowels=20=C3=B2=C3=A0=C3=B9=C3=A8=C3=A9=C3=AC?=";
$header = \Zend\Mail\Header\GenericHeader::fromString($str);
$mail->getHeaders()->addHeader($header);
echo $mail->toString();
unset($mail);
echo "Using Message::setHeaders(Headers \$headers) with Header::fromString()- ERROR: Throws Exception!\n";
$mail = new \Zend\Mail\Message();
$str = "X-Test-2: =?UTF-8?Q?Non=20=E2=80=9Cascii=E2=80=9D=20characters=20like=20accented=20?=\r\n"
." =?UTF-8?Q?vowels=20=C3=B2=C3=A0=C3=B9=C3=A8=C3=A9=C3=AC?=";
try {
$header = \Zend\Mail\Header\GenericHeader::fromString($str);
$headers = new \Zend\Mail\Headers();
$headers->addHeader($header);
$mail->setHeaders($headers);
echo $mail->toString();
} catch (\Exception $e) {
echo 'EXCEPTION: ' . $e->getMessage();
echo "\n\n";
}
unset($mail);